CN116700884A - 快照回滚数据一致性测试方法、装置、设备及介质 - Google Patents
快照回滚数据一致性测试方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116700884A CN116700884A CN202310459286.9A CN202310459286A CN116700884A CN 116700884 A CN116700884 A CN 116700884A CN 202310459286 A CN202310459286 A CN 202310459286A CN 116700884 A CN116700884 A CN 116700884A
- Authority
- CN
- China
- Prior art keywords
- file
- snapshot
- module
- data
- test
- 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.)
- Pending
Links
- 238000010998 test method Methods 0.000 title claims abstract description 25
- 238000012360 testing method Methods 0.000 claims abstract description 228
- 238000000034 method Methods 0.000 claims description 45
- 238000012544 monitoring process Methods 0.000 claims description 35
- 238000013524 data verification Methods 0.000 claims description 23
- 230000002159 abnormal effect Effects 0.000 claims description 22
- 238000012795 verification Methods 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 35
- 230000006870 function Effects 0.000 description 23
- 239000003795 chemical substances by application Substances 0.000 description 17
- 239000008186 active pharmaceutical agent Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 230000001960 triggered effect Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 238000002347 injection Methods 0.000 description 10
- 239000007924 injection Substances 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 239000000243 solution Substances 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000004927 fusion Effects 0.000 description 5
- 230000036541 health Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012806 monitoring device Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000008014 freezing Effects 0.000 description 1
- 238000007710 freezing Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013024 troubleshooting Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种快照回滚数据一致性测试方法、装置、设备及介质,该快照回滚数据一致性测试方法包括:创建测试客户端,并在所述测试客户端内创建文件;随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作;基于第一预定条件,对所述测试客户端创建快照;基于第二预定条件,对所述测试客户端执行快照回滚操作;对执行所述快照回滚操作后的数据进行一致性校验。本发明提供的快照回滚数据一致性测试方法,通过随机生成文件操作场景,糅合多种文件操作方式,随机组合多种文件读写场景的数据操作机制,以实现贴近真实的文件数据读写测试场景。
Description
技术领域
本发明是关于计算机存储技术领域,特别是关于一种快照回滚数据一致性测试方法、装置、设备及介质。
背景技术
现如今,在IT基础设施虚拟化大放光彩的云技术架构中,随着云计算及相关计算、存储及网络等虚拟化技术的迅速普及,越来越多的企业选择将以前位于传统物理机房及物理设备上的业务应用搬到云上运营,随之带来的是云上存储的数据爆发式增长,这就给存储数据安全和可靠性带来很大的挑战。
关于如何最大程度的保障云上数据安全,在云计算以及虚拟化技术领域,近些年以来,诞生了一个又一个技术解决方案,其中快照技术是最常见也是适用率最高的一种实现。虚拟资源特别是虚拟机及虚拟存储系统中的快照技术,作为云上存储数据容灾与备份的一种实现方式,得到广泛的应用,当应用业务需要或遭遇数据损坏时,可以通过快照回滚来进行虚拟资源快速的数据恢复,从而将数据恢复到某个可用的时间点的状态,保证数据的完整性和可恢复性。因此,快照技术是云计算以及云存储领域中不可或缺的功能和技术方案。
现有技术中,对快照回滚数据一致性的测试,采用的是基准测试工具(如fio、vdbench)进行数据读写、数据一致性校验操作,基准测试工具一般按照代码固定的流程进行数据读写,数据操作方式只有3种类型,即纯写、纯读、混合读写,这实际上与真实世界下的数据操作方式不完全符合。
因此,针对上述技术问题,有必要提供一种新的快照回滚数据一致性测试方法、装置、设备及介质。
发明内容
本发明的目的在于提供一种快照回滚数据一致性测试方法、装置、设备及介质,其测试场景能够更贴近真实的文件数据读写。
为实现上述目的,本发明提供的技术方案如下:
第一方面,本发明提供了一种快照回滚数据一致性测试方法,其包括:
创建测试客户端,并在所述测试客户端内创建文件;
随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作;
基于第一预定条件,对所述测试客户端创建快照;
基于第二预定条件,对所述测试客户端执行快照回滚操作;
对执行所述快照回滚操作后的数据进行一致性校验。
在一个或多个实施方式中基于云服务器创建虚拟机作为测试客户端,将创建成功后的虚拟机信息写入配置文件中,并基于测试者自定义的文件目录数和文件数在所述测试客户端内创建文件。
在一个或多个实施方式中,所述随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作,包括:
构建包括多个文件操作步骤的文件操作池,从所述文件操作池中随机选择若干所述文件操作步骤,以生成文件操作场景;
基于所述文件操作场景对所述文件进行操作,并实时记录对所述文件的操作信息到日志文件中。
在一个或多个实施方式中,所述文件操作池中的文件操作步骤包括对文件进行写数据、读数据、复制数据、追加内容、删除数据和重新覆写。
在一个或多个实施方式中,所述基于第一预定条件,对所述测试客户端创建快照,包括:
当对所述文件执行的文件操作场景数量每达到预定数量时,对所述测试客户端创建一次快照;或
当对所述文件的操作时间每达到预定时长时,对所述测试客户端创建一次快照。
在一个或多个实施方式中,所述基于第二预定条件,对所述测试客户端执行快照回滚操作,包括:
在所述测试客户端中注入对所述文件的异常操作,并将所述异常操作的步骤记录到错误日志文件中;
实时监测所述文件,确定所述文件是否存在数据损坏;
当监测到所述文件存在数据损坏且捕捉到所述错误日志文件后,对所述测试客户端执行快照回滚操作。
在一个或多个实施方式中,所述方法还包括:
当数据校验失败时,保留所述数据校验失败的测试客户端和文件操作场景;
判断是否满足测试结束条件;
当满足所述测试结束条件时,重新创建测试客户端,并继续执行快照回滚数据一致性测试。
第二方面,本发明提供了一种快照回滚数据一致性测试装置,其包括:
创建模块,用于创建测试客户端,并在所述测试客户端内创建文件;
操作模块,用于随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作;
快照模块,用于基于第一预定条件,对所述测试客户端创建快照;
回滚模块,用于基于第二预定条件,对所述测试客户端执行快照回滚操作;
校验模块,用于对执行所述快照回滚操作后的数据进行一致性校验。
第三方面,本发明提供了一种电子设备,包括存储器、处理器、以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前所述的快照回滚数据一致性测试方法。
第四方面,本发明提供了一种计算机可读介质,所述计算机可读介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如前所述的快照回滚数据一致性测试方法。
与现有技术相比,本发明提供的快照回滚数据一致性测试方法,通过随机生成文件操作场景,糅合多种文件操作方式,随机组合多种文件读写场景的数据操作机制,以实现贴近真实的文件数据读写测试场景;并通过文件操作场景数、运行时间间隔来自动触发创建快照请求,通过异常注入的方式来自动化触发回滚快照请求,以执行数据一致性校验。
附图说明
图1是本发明一实施方式中快照回滚数据一致性测试方法的流程图;
图2是本发明一实施方式中快照回滚数据一致性测试系统的结构框图;
图3是本发明一实施方式中模块M1的工作流程图;
图4是本发明一实施方式中快照回滚数据一致性测试系统中各模块的连接关系图;
图5是本发明一实施方式中生成文件操作场景的示例图;
图6是本发明一实施方式中模块M5工作原理示意图;
图7是本发明一实施方式中模块M4和模块M5示例性工作场景示意图;
图8是本发明一实施方式中模块M6的工作流程图;
图9是本发明一实施方式中模块M7的工作流程图;
图10是本发明一实施方式中模块M8的工作流程图;
图11是本发明另一实施方式中生成文件操作场景的示例图;
图12是本发明另一实施方式中快照回滚数据一致性测试装置的结构框图;
图13是本发明另一实施方式中电子设备的结构框图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
除非另有其他明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其他元件或其他组成部分。
为了方便理解本申请的技术方案,下面首先对本发明中可能出现的技术术语进行详细解释。
快照(Snapshot):通常是指对计算机系统或者系统的某个部分进行备份、保存的一种方式。在备份过程中,计算机系统的状态、数据、配置等信息都被记录下来,以便于在需要恢复时使用。在虚拟化技术中,快照是一种虚拟机镜像的备份方式。虚拟机快照通常是指对虚拟机磁盘的当前状态进行备份,并将备份数据保存为一个独立的文件。在创建快照后,虚拟机可以继续运行,但是任何对虚拟机磁盘的写操作都会被记录到新的文件中,而不是原始磁盘上。快照的主要作用是方便用户在需要时进行虚拟机的还原或者回滚操作。通过恢复到某个快照,用户可以将虚拟机还原到之前的状态,比如恢复到一个稳定的系统状态、恢复误删除的文件或者配置等。此外,快照还可以用于实现虚拟机的版本管理和测试,用户可以基于某个快照创建新的虚拟机,进行软件的安装、测试等操作。
快照回滚:是指将虚拟机恢复到之前某一时间点的状态,这个时间点是通过创建快照时记录的。在虚拟化环境中,快照回滚是一种常见的数据备份和恢复方法。当虚拟机发生故障或出现其他问题时,可以使用快照回滚将虚拟机恢复到之前的状态,避免数据丢失和系统崩溃的影响。快照回滚可以提高系统的可用性和可靠性,是虚拟化环境中非常重要的一部分。
scp:是一种Linux/Unix系统下的文件传输命令,全称为Secure Copy。它可以在本地主机和远程主机之间安全地复制文件和目录,采用SSH协议进行加密传输,保证数据传输的安全性。使用scp命令进行文件传输时,需要指定源文件和目标文件的路径,可以通过IP地址、用户名、文件路径等方式指定远程主机的位置,同时需要提供SSH连接的密码或者密钥进行身份验证。
请参照图1所示,为本发明一实施方式中提供的快照回滚数据一致性测试方法的流程图,该快照回滚数据一致性测试方法具体包括以下步骤:
S101:创建测试客户端,并在所述测试客户端内创建文件。
一示例性的实施例中,可基于云服务器创建虚拟机作为测试客户端,将创建成功后的虚拟机信息写入配置文件中,并基于测试者自定义的文件目录数和文件数在所述测试客户端内创建文件。
需要说明的是,可以以超融合架构或其他类型的云计算架构的服务器作为测试调度、控制服务端,以虚拟机作为测试客户端的快照回滚数据一致性测试方法和测试装置。超融合架构(Hyperconverged Infrastructure,HCI)是一种新型的基础架构模式,它集成了计算、存储和网络资源,构成了一个统一的管理平台。超融合架构通过将计算、存储和网络资源整合到同一硬件设备上,可以实现快速、简单、高效的部署和管理。超融合架构一般由一组计算节点和存储节点组成,这些节点通常运行在虚拟化环境中,可以通过一个中心化的管理平台来管理和配置。超融合架构可以实现高可用性和灵活性,还可以根据需要进行扩展和升级。
S102:随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作。
一示例性的实施例中,可构建包括多个文件操作步骤的文件操作池,从所述文件操作池中随机选择若干所述文件操作步骤,以生成文件操作场景;基于所述文件操作场景对所述文件进行操作,并实时记录对所述文件的操作信息到日志文件中。其中,所述文件操作池中的文件操作步骤包括对文件进行写数据、读数据、复制数据、追加内容、删除数据和重新覆写等。
具体地,可以通过构建包括多个文件操作步骤的文件操作池,并从中随机选择一定数量的文件操作步骤,来生成文件操作场景。具体方案如下:
定义多个文件操作步骤,例如对文件进行写数据、读数据、复制数据、追加内容、删除数据和重新覆写等。将每个文件操作步骤定义为一个独立的函数,并将它们存储在一个文件操作函数库中。创建一个文件操作池,将多个文件操作步骤添加到文件操作池中。使用随机数生成器来随机选择一定数量的文件操作步骤,以生成文件操作场景。执行文件操作场景中所选的文件操作步骤,以对文件进行操作。
S103:基于第一预定条件,对所述测试客户端创建快照。
一示例性的实施例中,基于第一预定条件,对所述测试客户端创建快照,具体包括:
当对所述文件执行的操作场景数量每达到预定数量时,对所述测试客户端创建一次快照;或当对所述文件的操作时间每达到预定时长时,对所述测试客户端创建一次快照。
可以理解的是,在测试过程中,可以设置每个快照记录的文件操作场景数量;例如,每执行10组文件操作场景记录一个快照,这样每次回滚时,可以选择对应的快照,从而保证数据一致性。也可以设置每个快照记录的时间间隔;例如,每隔30分钟记录一个快照,这样即使在测试中发生了异常情况,也能够尽可能地恢复到之前的状态。
根据具体情况,可以根据实际需要调整快照创建规则。例如,如果文件操作较少,可以适当减少快照记录的数量,如果测试时间较短,可以适当减少快照记录的时间间隔。
S104:基于第二预定条件,对所述测试客户端执行快照回滚操作。
一示例性的实施例中,可在所述测试客户端中注入对所述文件的异常操作,并将所述异常操作的步骤记录到错误日志文件中;实时监测所述文件,确定所述文件是否存在数据损坏;当监测到所述文件存在数据损坏且捕捉到所述错误日志文件后,对所述测试客户端执行快照回滚操作
S105:对执行所述快照回滚操作后的数据进行一致性校验。
需要说明的是,进行快照回滚后,可以使用一致性校验工具来验证回滚后的数据是否与快照创建时的数据一致。一致性校验工具通常会计算数据的哈希值,并将其与快照创建时的哈希值进行比较。以下是一致性校验的一般步骤:
在快照回滚前,记录需要校验的数据的哈希值。进行快照回滚操作后,将回滚后的数据的哈希值与记录的哈希值进行比较。如果两个哈希值相同且快照回滚操作后测试客户端中文件夹、文件的access、modify、change属性、文件内容和快照文件中的最后记录一致,则数据一致性得到验证。如果两个哈希值不同或者快照回滚操作后测试客户端中文件夹、文件的access、modify、change属性、文件内容和快照文件中的最后记录不一致,则数据存在不一致的问题,即代表测试过程中存在错误。可以使用差异比较工具来查找数据的具体不一致之处,并保留及回传相关数据及文件,便于后续人工进行复核及排查原因。
用于哈希值校验的一致性校验工具可以是系统自带的工具,也可以是第三方工具。在进行一致性校验之前,需要先确认选定的工具支持校验的数据类型和格式。
下面结合具体的实施例对本发明提供的快照回滚数据一致性测试方法作进一步说明。
请参照图2所示,在本实施方式中实施快照回滚数据一致性测试方法的快照回滚数据一致性测试系统包括模块M1、控制端代理模块M2、客户端代理模块M3、模块M4、模块M5、模块M6、模块M7及模块M8。其中的模块M1、控制端代理模块M2运行在服务器端,而客户端代理模块M3、模块M4、模块M5、模块M6、模块M7及模块M8运行在测试客户端上。
在执行快照回滚数据一致性测试之前,首先要搭建测试环境。该测试环境,是指一台或多台物理服务器所组成的一种超融合、分布式的云计算管理平台或集群,在这种云计算管理平台或集群中通常都会采用不同的虚拟化技术解决方案或程序,也称之为Hypervisor,Hypervisor代表一般包括KVM、Xen、VMWare ESXi等。这些Hypervisor虚拟化技术解决方案部署在每一台x86或Arm架构的物理服务器之中。完成测试环境的准备工作之后,进入正式的快照回滚数据一致性测试阶段。
第一步,由测试者将模块M1、控制端代理模块M2、客户端代理模块M3、模块M4、模块M5、模块M6、模块M7及模块M8等所属的脚本文件上传至任意一台超融合或其他类型的虚拟化服务器之中,这一台服务器就是作为服务器端。
第二步,在这台服务器端操作系统(一般为Linux相关的桌面版或服务器操作系统)中,测试者运行模块M1所在的脚本文件,模块M1脚本运行后,将会在当前服务器端的操作系统终端界面中,提示测试者需要自定义客户端虚拟机的数量N、客户端内文件目录数C、文件数F、测试总时间参数T等四个参数。测试者只需根据自身测试规模需要,以手动输入的方式完成这四个参数值的设置,剩下的所有操作过程,包括模块M1、控制端代理模块M2、客户端代理模块M3、模块M4、模块M5、模块M6、模块M7及模块M8的运行都无需再进行任何人工干预,均由快照回滚数据一致性测试系统来自动调度和运行。
下面对各个模块的功能作用进行详细说明。
请参照图3所示,模块M1作为快照回滚数据一致性测试系统的主要入口,以脚本的方式呈现。模块M1具体的工作内容包括:
第①环节中,接受输入参数指的是客户端内文件目录数C、文件数F这两个参数,它们是模块M4所属脚本中的重要组成变量。
第②环节中,接受输入参数指的是客户端虚拟机的数量N,N的数量决定了本次测试需要创建几台测试客户端。
第③环节中,完成第①、第②环节后,模块M1自动将客户端代理模块M3、模块M4、模块M5、模块M6、模块M7等脚本文件,以scp的操作方式通过SSH传输至每台测试客户端中。
第④环节中,模块M1负责在服务器端中运行控制端代理模块M2,以实时监听、接受和处理来自测试客户端的请求(通过客户端代理模块M3转发)。
第⑤环节中,具体的快照创建、快照回滚操作都是由模块M1负责调用API执行,当完成回滚快照操作后,模块M1还将自动传送模块M8脚本文件至测试客户端中。
第⑥环节中,模块M1还负责接收和保存测试过程中的各项监控日志文件、错误日志文件。
在以上各项环节完成过程中,模块M1通过测试者自定义的测试总时间参数T,来判断何时应该终止全部测试。
控制端代理模块M2作为模块M1的监听设备运行在服务器端中。控制端代理模块M2的作用是一端负责与客户端代理模块M3通信,另一端负责接收模块M3发送来的信号、请求转交给模块M1。
请参照图4所示,客户端代理模块M3作为统一调度、监听设备运行在测试客户端中。客户端代理模块M3的作用是负责统一调度执行测试客户端上的多个模块,如模块M4、模块M5、模块M6、模块M7等,同时还接收由这几个模块产生的信号转换成资源操作请求,再将请求转发给控制端代理模块M2。
在模块M4中,本实施例提供一种文件数据产生和操作的方式,它是基于现实中的文件读写场景,形成的一种文件操作模型,该模型中存在两个层面。第一是平面层,平面层的作用是建立文件的树形结构,控制这种树形结构的方式是模块M1中输入的客户端内文件目录数C和文件数F,然后依次创建文件目录C个,再进入文件目录中创建F个文件;第二是数据层,数据层的作用是解决数据从哪里来的问题,核心就是通过模块M4的文件数据读写、操作方式对平面层中的对象进行各项操作。本实施例提出一种糅合多种贴近现实的文件操作方式,并且实现随机组合多种文件读写场景的数据操作机制。模块M4的具体设计方案如下:
第一点,本实施例提出一种文件操作池的概念,在这个文件操作池中包含现实文件使用中的常见操作,如在文件里写数据、从文件读数据、复制数据、在文件中追加内容、删除数据、重新覆写等,这些操作的具体步骤在本发明的技术方案中采用自行设计的函数代码实现。
第二点,设计一种调度函数,函数的作用是从文件操作池中随机选取多个文件操作方式进行组合,它会判断测试客户端中的文件数F,根据文件数F的具体数量来形成一组实际的文件操作场景,即如果F=2,将生成2组实际的文件操作场景,如F=5,将生成5组实际的文件操作场景。
第三点,将一组实际的文件操作场景注入到不同虚拟机不同文件目录进行操作。具体来说,就是在不同测试客户端(即虚拟机)中执行的文件操作的内容、顺序是不一样的,这些操作是通过本发明设计的函数随机生成和组合而成。
第四点,当一组实际的文件操作场景的所有步骤完成后,再通过本发明设计的函数随机生成和组合出一组新的实际的文件操作场景,循环往复直到满足预定义退出条件(如测试总时间)后,终止全部测试。
具体地,请参照图5所示,依据文件目录数C=1、文件数F=2,在一个测试虚拟机中创建了1个文件目录、2个文件,在文件操作池中预先定义了多种文件操作方式,例如在文件中写数据、删除内容重新覆写等,通过随机调度函数会从文件操作池中随机的选取多种文件操作方式进行组合排序,形成实际执行的一组文件操作场景,这些场景将在虚拟机下的不同文件中进行操作。可见,在文件1、文件2中执行的文件操作场景是不同的。
在模块M5中,本实施例设计了一种实时监控、收集和记录测试过程中文件属性、文件数据变化的机制,这个机制的作用是负责实时监控模块M4运行中文件数据操作所产生的过程,包括操作时间、操作步骤、具体的数据内容、文件夹/文件的属性变化等一系列核心的过程数据。模块M5的作用就是在模块M4开始运行后,对模块M4中的各项文件数据操作的步骤、内容以及数据变化历史进行监控、收集和记录。请参照图6所示,具体设计方案如下:
第一点,在模块M4启动运行的同时,由客户端代理模块M3负责启动、运行模块M5,即在模块M4在运行时,模块M5必须同时运行。
第二点,在模块M5中由本发明设计一种监控体系,负责监控模块M4运行时的文件夹、文件、文件操作步骤及文件内容等四大观测项的操作历史、数据变化,实时收集和记录模块M4在执行文件操作场景时,包括执行了哪些步骤、操作(例如写入、读取、删除、追加、覆写等)了哪些数据、文件夹/文件的属性(例如时间)发生了什么变化等,对模块M4运行中的每一组文件操作场景中的每一个步骤都会自动生成一个唯一id进行记录,并详细记录文件操作的开始时间、操作步骤、进行操作的内容、操作完成时间、记录文件夹/文件的变化历史,将这6项通过监控收集到的数据,以结构化的数据形式进行存储,存储到命名为<文件N_虚拟机名称_虚拟机ip.log>日志文件中,而日志文件就保存在当前测试客户端(即虚拟机)中。
具体地,请参照图7所示,示出了模块M5的一种示例性设计方案。首先由位于测试客户端(即虚拟机)中的客户端代理模块M3负责启动和运行模块M4、模块M5。依据文件目录数C、文件数F,在测试客户端中创建对应数量的文件目录、文件,然后通过随机调度函数从文件操作池中随机的选取多种文件操作方式进行组合排序,形成实际执行的一组文件操作场景。在运行模块M4的同时开始运行模块M5进行实时的监控与记录,获取和收集id、操作开始时间、操作步骤、进行操作的内容、操作完成时间、文件夹属性、文件属性,将这些数据记录在<文件N.虚拟机名称_虚拟机ip.log>实时监控的日志文件中。
请参照图8所示,在模块M6中,本实施例设计了一种根据文件操作场景数量、运行时间等两种模式来确定何时创建快照的机制,该机制的核心过程包括以下步骤:
第一步,根据测试客户端(即虚拟机)中模块M4执行过程中的文件操作场景数(例如设置为10),或模块M4的运行时间(例如设置时间间隔为30分钟)来控制自动触发快照的创建请求(注:模块M6只会触发创建快照的请求,此时并不意味着立刻创建快照),如满足两个条件之一,则触发创建快照的请求。如不满足条件,则继续运行模块M6。
第二步,创建快照的请求得到触发,将发送信号至模块M5,由模块M5暂停监控进程,冻结往日志文件记录的过程,复制当前通过实时监控收集和记录的<文件N.虚拟机名称_虚拟机ip.log>实时监控日志文件,然后打上标签和后缀,即将新的日志文件命名为<文件N.虚拟机名称_虚拟机ip.log.快照N>,这里的N是大于等于1的正整数,随着快照创建请求的不断触发,N从1开始计数,每次触发快照请求,N就自增1。
第三步,模块M6负责将创建快照的请求通过客户端代理模块M3传递给控制端代理模块M2,同时将实时监控日志文件,即<文件N.虚拟机名称_虚拟机ip.log.快照N>从测试客户端(即虚拟机)回传至服务器端专门目录进行保存。
第四步,运行与服务器端中的模块M1,接收到来自测试客户端的快照创建请求,在判断实时监控日志文件,即<文件N.虚拟机名称_虚拟机ip.log.快照N>完整无误后,自动调用API(API的具体类型依据相应的虚拟化技术解决方案,如KVM、vmWare等)创建虚拟机及虚拟磁盘的快照。
第五步,服务器端创建快照成功,模块M5、模块M6恢复运行,新发起的文件操作场景和实时监控数据,将继续记录在原先的<文件N.虚拟机名称_虚拟机ip.log>实时监控日志文件中,而<文件N.虚拟机名称_虚拟机ip.log.快照N>文件不会发生任何数据访问和变更。
请参照图9所示,在模块M7中,本实施例设计了一种可以自动在测试客户端的文件操作过程中注入异常操作,模拟测试客户端(即虚拟机)发生故障,以触发快照回滚的请求的机制。模块M7中的主要过程包括以下三点:
第一点,模块M7在个测试客户端(即虚拟机)中运行后,即时运行两个主要进程,进程一的作用是执行异常操作注入,进程二的作用是负责对测试客户端进行健康监测。
第二点,模块M7中的随机异常操作注入函数,在该函数中首先预定义了多种异常操作方式,如文件中数据丢失、文件删除等,运行模块M7后,满足预定义的时间条件后(注入异常的时间条件,在本实施例中设计了一种时间间隔,设置为45分钟自动触发一次),将自动执行注入操作,通过随机异常注入函数从预定义异常场景中随机选择一种进行执行,异常注入操作的对象是测试客户端(即虚拟机)。发生异常后,进程一将发生异常的时间点、异常场景写入配置文件error.log中;第三点,健康监测进程会实时监控测试客户端是否发生异常,当发现配置文件error.log捕捉到异常已经发生后,触发需要对测试客户端(即虚拟机)执行快照回滚的请求,并将请求发送至客户端代理模块M3,由客户端代理模块M3转交至控制端代理模块M2。
在具体的测试过程中,模块M1主要过程包括以下三点:
第一点,接收到来自控制端代理模块M2发来的快照回滚请求,首先判断测试客户端(即虚拟机)在服务器端是否存在完整的<文件N.虚拟机名称_虚拟机ip.log.快照N>文件。
第二点,确认<文件N.虚拟机名称_虚拟机ip.log.快照N>完整无误后,自动调用API(API的具体类型依据相应的虚拟化技术解决方案,如KVM、vmWare等),选择最新的快照,对测试客户端(即虚拟机)执行快照回滚。
第三点,服务器端回滚快照成功后,由模块M1将<文件N.虚拟机名称_虚拟机ip.log.快照N>文件通过SSH方式回传至测试客户端(即虚拟机)中,并在服务器端再次对该文件进行重命名为<文件N.虚拟机名称_虚拟机ip.log.快照N.服务器端>。
请参照图10所示,在模块M8中,本实施例设计的一种快照回滚数据一致性校验方法,核心步骤包括以下步骤:
第一步,经过快照回滚后的测试客户端中存在一份<文件N.虚拟机名称_虚拟机ip.log.快照N>文件,与<文件N.虚拟机名称_虚拟机ip.log.快照N.服务器端>文件通过diff方式执行数据校验,确认快照回滚前后的日志文件中内容是否一致。
第二步,如果第一步文件校验无误后,将进一步的执行文件夹/文件属性、文件内容数据校验。首先是校验快照回滚后的测试客户端(即虚拟机)中文件夹、文件的access、modify、change属性是否和<文件N.虚拟机名称_虚拟机ip.log.快照N>文件中最后记录的保持一致。然后再校验回滚后的文件中的内容,是否和<文件N.虚拟机名称_虚拟机ip.log.快照N>文件中最后记录的保持一致。
模块M8将根据数据校验的结果来确定后续流程,如何数据校验通过,将发送信号至客户端代理模块M3调用模块M4、模块M5、模块M6及模块M7继续测试。如果数据校验不一致或失败,则保留数据校验失败的测试客户端、文件操作场景及日志文件,并发送数据校验失败的信号至控制端代理模块M2,再由模块M2转发至模块M1,当模块M1接收到有测试客户端(即虚拟机)存在数据校验失败的记录之后,记录数据校验失败的测试客户端、发生时间至错误日志文件中。再判断测试总时间参数T是否满足,如不满足,即设置的测试时长还未结束,将创建一台新的测试客户端(保留数据校验失败的客户端,该客户端不再进行测试)来继续执行测试。
基于前述快照回滚数据一致性测试系统,执行本发明提供的快照回滚数据一致性测试方法的步骤具体如下:
步骤1:运行模块M1,由测试者自定义客户端虚拟机的数量N、客户端内文件目录数C、文件数F、测试总时间参数T。
步骤2:接收来自测试者从步骤1输入的上述参数。首先,根据自定义客户端虚拟机的数量N,创建对应的N台虚拟机作为测试客户端,当所有虚拟机创建成功后将虚拟机信息(ip地址)写入配置文件A。其次,根据文件目录数C、文件数F的实际数值写入模块M4中。最后,本发明提供一种时间参数,即测试总时间参数T,由使用者自定义测试执行时间,单位是小时(比如24小时),作为控制整体测试周期的重要变量,写入模块M1。
步骤3:模块M1对测试客户端(即虚拟机)判断是否全部创建成功,如果成功则读取配置文件A,启动控制端代理模块M2。然后将客户端代理模块M3、模块M4、模块M5、模块M6、模块M7等脚本文件,以scp的操作方式通过SSH传输至每台测试客户端中。
步骤4:客户端代理模块M3被传输至测试客户端(即虚拟机)中后,首先启动模块M3程序运行。
步骤5:模块M3在每个测试客户端(即虚拟机)中运行后,同时运行模块M4、模块M5。在本步骤中首先根据测试者在步骤1中输入的客户端内文件目录数C、文件数F等参数,在测试客户端中创建相应的文件目录(以“文件夹1”、“文件夹2”命名),并在文件目录下创建相应的文件数量(以“文件1”、“文件2”命名)。之后在模块M4中自动运行随机调度函数,它负责从文件操作池中随机选择多个文件操作步骤,然后形成一组实际的文件操作场景。紧接着在不同的文件中,分别执行不同的一组文件操作场景。
同时,模块M5实时测试客户端中收集和记录模块M4在执行文件操作场景时,对模块M4运行中的每一组文件操作场景中的每一个步骤都会自动生成一个唯一id进行记录,并详细记录文件操作的开始时间、操作步骤、进行操作的内容、操作完成时间、记录文件夹/文件的变化历史,将这6项通过监控收集到的数据,存储到命名为“文件N.虚拟机名称_虚拟机IP地址.log”的日志文件中。
步骤6:在每个测试客户端(即虚拟机)中运行模块M6。通过模块M6可以在测试客户端进行各类型文件数据读写操作的过程中,根据由本发明设计的文件操作场景数量、运行时间等两种模式来确定何时创建快照。
在一示例性的实施例中,在模块M4持续运行一段时间后,模块M6判断出针对文件1、文件2的文件操作场景数已经执行完成10组,因此触发该测试客户端需要创建快照的请求。然后,通知模块M5暂停监控进程,冻结往日志文件记录的过程,复制当前通过实时监控收集和记录的“文件N.虚拟机名称_虚拟机IP地址.log”日志文件,打上标签和后缀,即将新的日志文件命名为“文件N.虚拟机名称_虚拟机IP地址.log.快照1”。之后将实时监控日志文件从测试客户端回传至服务器端专门目录进行保存。然后位于服务器端的M1模块接收到来自测试客户端的快照创建请求,自动调用API创建虚拟机快照。
步骤7:在每个测试客户端(即虚拟机)中运行模块M7,模块M7同样由客户端代理模块M3负责启动、运行。
在一示例性的实施例中,运行模块M7后,判断步骤5中的模块M4持续运行45分钟后,而且判断测试客户端已经触发过快照创建的请求后,将自动在测试客户端中执行注入异常操作,并将异常操作的步骤记录到error.log中。然后,模块M7的健康监测进程会实时监测到存在数据损坏,并且捕捉到error.log后,触发需要对测试客户端执行快照回滚的请求,模块M1接收到来自控制端代理模块M2发来的快照回滚请求,自动调用API执行快照回滚。
步骤8:当完成上述步骤7中的快照回滚操作后,位于服务器端的模块M1会执行两个过程,一是将保存在服务器端的<文件N.虚拟机名称_虚拟机ip.log.快照N>文件回传至快照回滚成功的测试客户端中;二是将模块M8以scp的操作方式通过SSH传输至每台测试客户端(即虚拟机)中。完成这两个过程后,进入快照回滚后数据一致性校验的过程。
需要说明的是,模块M8运行在测试客户端中,负责快照回滚后数据一致性校验的过程。如果数据校验通过,将继续执行步骤S2至步骤S8;如果数据校验失败,则保留数据校验失败的测试客户端、文件操作场景及日志文件,并发送数据校验失败的信号至控制端代理模块M2,再由模块M2转发至模块M1。当模块M1接收到有测试客户端存在数据校验失败的记录之后,记录数据校验失败的测试客户端、发生时间至错误日志文件中。再判断测试总时间参数T是否满足,如不满足,将创建一台新的测试客户端来继续执行步骤2至步骤8。
步骤9:当满足测试总时间参数T后,即测试时间结束,由模块M1结束全部测试,再总结错误日志文件中记录的信息,形成测试总结报告。
基于前述步骤,下面结合具体的实施例对本发明提供的快照回滚数据一致性测试方法作进一步说明。
在服务器端,首先执行模块M1。在M1模块的步骤1中,第一步是测试者根据自己对本次测试的规模要求,选择在服务器上操作系统的终端界面,以命令行的方式通过键盘输入本次测试客户端(即虚拟机)规模数量N=1,N可由测试者自定义输入的大于等于1的正整数值,1代表了本次测试有1台测试客户端参加,如果测试者输入的规模数量是5,即代表了本次测试有5台测试客户端参加。在步骤1中,整数值1存入一个变量中。第二步是测试者评估自身对快照回滚数据一致性的复杂度要求,以命令行的方式通过键盘输入本次测试的客户端内文件目录数C=1、文件数F=2。第三步是测试者根据自身测试需要,输入一个测试总时间长=24,这里就以24小时作为测试总时间长。
然后,位于服务器端的模块M1接收来自测试者从服务器操作系统的终端界面输入的上述参数。首先是根据客户端虚拟机数量1,创建对应的1台虚拟机(在本实施例中命名为testvm01)作为测试客户端,调用API(API的具体类型依据相应的虚拟化技术解决方案,如KVM、VMWare等)创建1台虚拟机,这台虚拟机就是本次快照回滚数据一致性测试过程中的测试客户端,当所有虚拟机创建成功后将虚拟机信息(在本实施例中IP地址为192.168.1.100)写入配置文件A。其次将来自测试者输入的文件目录数C=1、文件数F=2写入模块M4脚本中。最后由测试者自定义测试执行时间=24,作为控制整体测试周期的重要变量T,这个时间参数T作为控制本次快照回滚后数据一致性测试周期的开关,会写入服务器端模块M1脚本中,以实现测试倒计时,即当24小时结束后,自动终止全部测试。
测试客户端(即testvm01)创建成功后,模块M1读取配置文件A,在服务器端自动运行控制端代理模块M2函数,通过模块M2将客户端代理模块M3脚本、模块M4脚本、模块M5脚本、模块M6脚本、模块M7脚本,通过SSH一一将它们传输至测试客户端(即testvm01)中。
接下来在测试客户端(即testvm01)中,客户端代理模块M3脚本被传输至测试客户端(即testvm01)中后,首先自动运行模块M3脚本,然后模块M3作为测试客户端中各个模块统一监控和调度的程序,它将同时启动并运行模块M4脚本、模块M5脚本。
位于测试客户端中的模块M4运行之后,首先根据在本次实施例开始时,测试者输入的客户端内文件目录数C=1、文件数F=2,依次创建1个文件目录,再进入文件目录中创建2个文件。之后,在模块M4中自动运行随机调度函数,它负责从文件操作池中随机选择多个文件操作步骤,然后形成一组实际的文件操作场景(这些文件操作场景中包含由本发明设计和定义的贴近真实世界的文件操作步骤)。在本实施例中,因为在之前的步骤中文件目录和文件已创建完成,共有1个文件目录、2个文件,因此将生成2组实际的文件操作场景。
接着,在不同的文件中,分别执行不同的一组文件操作场景。在本实施例中请参照图5所示,文件1中执行的一种文件操作场景包括在文件1中追加内容、从文件中读取数据、复制数据、删除全部数据、在文件1中追加内容等步骤,而在文件2中执行的一种文件操作场景包括在文件2中写数据、删除全部数据、在文件2中追加内容、从文件2中读取数据、复制数据等。
当每个文件中的一组文件操作场景完成后,通过模块M4中自动运行随机调度函数生成和组合出一组新的实际的文件操作场景,循环执行,如图11所示,当第1组文件操作场景完成后,自动生成第2组文件操作场景执行,当第2组文件操作场景完成后,自动生成第3组文件操作场景执行,以此类推。
在测试客户端中,在模块M4运行的同时,还会运行模块M5。模块M5实时在testvm01虚拟机中监控和记录模块M4在执行文件操作场景时,包括执行了哪些步骤、操作了哪些数据、文件夹/文件的属性发生了什么变化等。对模块M4运行中的每一组文件操作场景中的每一个步骤都会自动生成一个唯一id进行记录,并详细记录文件操作的开始时间、操作步骤、进行操作的内容、操作完成时间、记录文件夹/文件的变化历史,将这6项通过监控收集到的数据,以结构化的数据形式进行存储,存储到命名为“文件1.testvm01_192.168.1.100.log”、“文件2.testvm01_192.168.1.100.log”的日志文件中,而日志文件就保存在当前测试客户端(即testvm01)中。
在测试客户端(即testvm01)执行模块M4、模块M5之后,由客户端代理模块M3负责启动运行模块M6,模块M6自动判断模块M4执行过程中的文件操作场景数,在模块M4持续运行一段时间后,模块M6判断出针对文件1、文件2的文件操作场景数已经执行完成10组,因此触发该测试客户端需要创建快照的请求。
然后,模块M6通知模块M5暂停监控进程,冻结往日志文件记录的过程,复制当前通过实时监控收集和记录的“文件1.testvm01_192.168.1.100.log”、“文件2.testvm01_192.168.1.100.log”日志文件,并打上标签和后缀,即将新的日志文件命名为“文件1.testvm01_192.168.1.100.log.快照1”、“文件2.testvm01_192.168.1.100.log.快照1”。
之后将这两个文件从测试客户端(即testvm01)回传至服务器端专门目录进行保存,并将该文件重命名为“文件1.testvm01_192.168.1.100.log.快照1.服务器端”、“文件2.testvm01_192.168.1.100.log.快照1.服务器端”。然后位于服务器端的M1模块接收到来自测试客户端的快照创建请求,再判断这两个实时监控日志文件完整无误后,自动调用API创建虚拟机的第1个快照。
最后,服务器端创建快照成功,位于testvm01虚拟机中的模块M5、模块M6恢复运行,新发起的文件操作场景和实时监控数据,将继续记录在原先的“文件1.testvm01_192.168.1.100.log”、“文件2.testvm01_192.168.1.100.log”实时监控日志文件中,而“文件1.testvm01_192.168.1.100.log.快照1”、“文件2.testvm01_192.168.1.100.log.快照1”这两个文件在testvm01虚拟机变为只读存档,不会发生任何数据访问和变更。上述的一系列操作和过程对于测试者来说是无感知的行为,完全交由服务器端模块、客户端模块自动化处理。
在测试客户端(即testvm01)执行模块M4、模块M5之后,由客户端代理模块M3负责启动运行模块M7。运行模块M7后,该模块M7判断模块M4在持续运行45分钟后,而且判断虚拟机testvm01已经触发过快照创建的请求后,将自动在testvm01虚拟机中执行注入异常操作,将文件1删除,并将异常操作记录到error.log中。接下来模块M7的健康监测进程会实时监测到存在数据损坏,并且捕捉到error.log后,触发需要对testvm01虚拟机执行快照回滚的请求。
模块M1接收到来自控制端代理模块M2发来的快照回滚请求,自动调用API,选择属于testvm01虚拟机的最新快照,执行快照回滚。服务器端回滚快照成功后,由模块M1将“文件1.testvm01_192.168.1.100.log.快照1.服务器端”、“文件2.testvm01_192.168.1.100.log.快照1.服务器端”文件通过SSH方式回传至testvm01虚拟机中,之后模块M1再将模块M8以scp的操作方式通过SSH传输至testvm01虚拟机中。
位于测试客户端(即testvm01)的模块M8负责快照回滚后的数据一致性校验工作。第一步是对经过快照回滚后的testvm01虚拟机中存在的一份“文件1.testvm01_192.168.1.100.log.快照1”、“文件2.testvm01_192.168.1.100.log.快照1”文件,与“文件1.testvm01_192.168.1.100.log.快照1.服务器端”、“文件2.testvm01_192.168.1.100.log.快照1.服务器端”文件通过diff方式执行数据校验对比,如第一步校验通过,将进一步的执行文件夹/文件属性、文件内容数据校验。两个步骤的数据校验均通过,确保数据无误后,模块M8将发送信号至客户端代理模块M3调用模块M4、模块M5、模块M6及模块M6在testvm01虚拟机中继续测试,直到下一次发起创建快照、回滚快照及数据校验的过程。
测试客户端(即testvm01)在完成1次创建快照、回滚快照及数据校验过程之后,由模块M1判断当前测试总时间24小时还未结束,将继续执行测试。
testvm01虚拟机中的模块M4持续运行一段时间后,模块M6自动判断模块M4执行过程中运行时间超过30分钟,因此触发该测试客户端需要创建快照的请求。接着,模块M6通知模块M5暂停监控进程,冻结往日志文件记录的过程,复制当前通过实时监控收集和记录的“文件1.testvm01_192.168.1.100.log”、“文件2.testvm01_192.168.1.100.log”实时监控日志文件,并打上标签和后缀,即将新的日志文件命名为“文件1.testvm01_192.168.1.100.log.快照2”、“文件2.testvm01_192.168.1.100.log.快照2”。
之后将这两个文件从测试客户端(即testvm01)回传至服务器端专门目录进行保存,并将该文件重命名为“文件1.testvm01_192.168.1.100.log.快照2.服务器端”、“文件2.testvm01_192.168.1.100.log.快照2.服务器端”,然后位于服务器端的M1模块接收到来自测试客户端的快照创建请求,再判断这两个实时监控日志文件完整无误后,自动调用API创建虚拟机的第2个快照。
然后,由模块M7判断模块M4持续运行45分钟后,而且判断虚拟机testvm01已经触发过快照创建的请求后,将自动在testvm01虚拟机中执行注入异常操作,将文件2删除,并将异常操作记录到error.log中。接下来模块M7的健康监测进程会实时监测到存在数据损坏,并且捕捉到error.log后,触发需要对testvm01虚拟机执行快照回滚的请求。
模块M1接收到来自控制端代理模块M2发来的快照回滚请求,自动调用API,选择属于testvm01虚拟机的最新快照,执行快照回滚。服务器端回滚快照成功后,由模块M1将“文件1.testvm01_192.168.1.100.log.快照2.服务器端”、“文件2.testvm01_192.168.1.100.log.快照2.服务器端”文件通过SSH方式回传至testvm01虚拟机中,之后模块M1再将模块M8以scp的操作方式通过SSH传输至testvm01虚拟机中。
位于testvm01虚拟机中的模块M8负责快照回滚后的数据一致性校验工作。第一步是对经过快照回滚后的testvm01虚拟机中存在一份“文件1.testvm01_192.168.1.100.log.快照2”、“文件2.testvm01_192.168.1.100.log.快照2”文件,与“文件1.testvm01_192.168.1.100.log.快照2.服务器端”、“文件2.testvm01_192.168.1.100.log.快照2.服务器端”文件通过diff方式执行数据校验。
在数据校验过程中,模块M8识别到“文件2.testvm01_192.168.1.100.log.快照2”文件与文件2.testvm01_192.168.1.100.log.快照2.服务器端”文件存在不一致,即发生快照回滚后的数据不一致情况。保留数据校验失败的testvm01虚拟机、文件操作场景及日志文件,并发送数据校验失败的信号至控制端代理模块M2,再由模块M2转发至模块M1,当模块M1接收到testvm01虚拟机存在数据校验失败的记录之后,记录数据校验失败的testvm01虚拟机、发生时间至错误日志文件中,再判断测试总时间24小时是否结束,如时间还有剩余,由模块M1创建1台新的测试客户端(命名为testvm002)继续执行测试。
当24小时结束后,由模块M1结束全部测试,再总结错误日志文件中记录的信息,形成测试总结报告。
综上所述,本发明提供的快照回滚数据一致性测试方法,通过随机生成文件操作场景,糅合多种文件操作方式,随机组合多种文件读写场景的数据操作机制,以实现贴近真实的文件数据读写测试场景;并通过文件操作场景数、运行时间间隔来自动触发创建快照请求,通过异常注入的方式来自动化触发回滚快照请求,以执行数据一致性校验。
请参照图12所示,基于与前述快照回滚数据一致性测试方法相同的发明构思,本发明提供了一种快照回滚数据一致性测试装置200,其包括创建模块201、操作模块202、快照模块203、回滚模块204和校验模块205。
创建模块201用于创建测试客户端,并在所述测试客户端内创建文件。操作模块202用于随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作。快照模块203用于基于第一预定条件,对所述测试客户端创建快照。回滚模块204用于基于第二预定条件,对所述测试客户端执行快照回滚操作。校验模块205用于对执行所述快照回滚操作后的数据进行一致性校验。
请参照图13所示,本发明实施例还提供了一种电子设备300,该电子设备300包括至少一个处理器301、存储器302(例如非易失性存储器)、内存303和通信接口304,并且至少一个处理器301、存储器302、内存303和通信接口304经由总线305连接在一起。至少一个处理器301用于调用在存储器302中存储或编码的至少一个程序指令,以使得至少一个处理器301执行本说明书的各个实施方式中所描述的快照回滚数据一致性测试的各种操作和功能。
在本说明书的实施例中,电子设备300可以包括但不限于:个人计算机、服务器计算机、工作站、桌面型计算机、膝上型计算机、笔记本计算机、移动电子设备、智能电话、平板计算机、蜂窝电话、个人数字助理(PDA)、手持装置、消息收发设备、可佩戴电子设备、消费电子设备等等。
本发明实施例还提供了一种计算机可读介质,该计算机可读介质上承载有计算机执行指令,所述计算机执行指令被处理器执行时,可用于实现本说明书的各个实施例中描述的快照回滚数据一致性测试方法的各种操作和功能。
本发明中的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
Claims (10)
1.一种快照回滚数据一致性测试方法,其特征在于,包括:
创建测试客户端,并在所述测试客户端内创建文件;
随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作;
基于第一预定条件,对所述测试客户端创建快照;
基于第二预定条件,对所述测试客户端执行快照回滚操作;
对执行所述快照回滚操作后的数据进行一致性校验。
2.如权利要求1所述的快照回滚数据一致性测试方法,其特征在于,所述创建测试客户端,并在所述测试客户端内创建文件,包括:
基于云服务器创建虚拟机作为测试客户端,将创建成功后的虚拟机信息写入配置文件中,并基于测试者自定义的文件目录数和文件数在所述测试客户端内创建文件。
3.如权利要求1所述的快照回滚数据一致性测试方法,其特征在于,所述随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作,包括:
构建包括多个文件操作步骤的文件操作池,从所述文件操作池中随机选择若干所述文件操作步骤,以生成文件操作场景;
基于所述文件操作场景对所述文件进行操作,并实时记录对所述文件的操作信息到日志文件中。
4.如权利要求2所述的快照回滚数据一致性测试方法,其特征在于,所述文件操作池中的文件操作步骤包括对文件进行写数据、读数据、复制数据、追加内容、删除数据和重新覆写。
5.如权利要求1所述的快照回滚数据一致性测试方法,其特征在于,所述基于第一预定条件,对所述测试客户端创建快照,包括:
当对所述文件执行的文件操作场景数量每达到预定数量时,对所述测试客户端创建一次快照;或
当对所述文件的操作时间每达到预定时长时,对所述测试客户端创建一次快照。
6.如权利要求1所述的快照回滚数据一致性测试方法,其特征在于,所述基于第二预定条件,对所述测试客户端执行快照回滚操作,包括:
在所述测试客户端中注入对所述文件的异常操作,并将所述异常操作的步骤记录到错误日志文件中;
实时监测所述文件,确定所述文件是否存在数据损坏;
当监测到所述文件存在数据损坏且捕捉到所述错误日志文件后,对所述测试客户端执行快照回滚操作。
7.如权利要求1所述的快照回滚数据一致性测试方法,其特征在于,所述方法还包括:
当数据校验失败时,保留所述数据校验失败的测试客户端和文件操作场景;
判断是否满足测试结束条件;
当满足所述测试结束条件时,重新创建测试客户端,并继续执行快照回滚数据一致性测试。
8.一种快照回滚数据一致性测试装置,其特征在于,包括:
创建模块,用于创建测试客户端,并在所述测试客户端内创建文件;
操作模块,用于随机生成文件操作场景,基于所述文件操作场景对所述文件进行操作;
快照模块,用于基于第一预定条件,对所述测试客户端创建快照;
回滚模块,用于基于第二预定条件,对所述测试客户端执行快照回滚操作;
校验模块,用于对执行所述快照回滚操作后的数据进行一致性校验。
9.一种电子设备,包括存储器、处理器、以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~7中任一项所述的快照回滚数据一致性测试方法。
10.一种计算机可读介质,其特征在于,所述计算机可读介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1~7中任一项所述的快照回滚数据一致性测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310459286.9A CN116700884A (zh) | 2023-04-26 | 2023-04-26 | 快照回滚数据一致性测试方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310459286.9A CN116700884A (zh) | 2023-04-26 | 2023-04-26 | 快照回滚数据一致性测试方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116700884A true CN116700884A (zh) | 2023-09-05 |
Family
ID=87824690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310459286.9A Pending CN116700884A (zh) | 2023-04-26 | 2023-04-26 | 快照回滚数据一致性测试方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116700884A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130980A (zh) * | 2023-10-24 | 2023-11-28 | 杭州优云科技有限公司 | 一种虚拟机快照管理方法及装置 |
CN118672934A (zh) * | 2024-08-26 | 2024-09-20 | 嘉兴嘉赛信息技术有限公司 | 一种多模式场景下恢复出厂后数据回滚准确性测试方法 |
-
2023
- 2023-04-26 CN CN202310459286.9A patent/CN116700884A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117130980A (zh) * | 2023-10-24 | 2023-11-28 | 杭州优云科技有限公司 | 一种虚拟机快照管理方法及装置 |
CN117130980B (zh) * | 2023-10-24 | 2024-02-27 | 杭州优云科技有限公司 | 一种虚拟机快照管理方法及装置 |
CN118672934A (zh) * | 2024-08-26 | 2024-09-20 | 嘉兴嘉赛信息技术有限公司 | 一种多模式场景下恢复出厂后数据回滚准确性测试方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11113156B2 (en) | Automated ransomware identification and recovery | |
US8495019B2 (en) | System and method for providing assured recovery and replication | |
US10895996B2 (en) | Data synchronization method, system, and apparatus using a work log for synchronizing data greater than a threshold value | |
US8055937B2 (en) | High availability and disaster recovery using virtualization | |
CN106951345B (zh) | 一种虚拟机磁盘数据的一致性测试方法及装置 | |
CN116700884A (zh) | 快照回滚数据一致性测试方法、装置、设备及介质 | |
EP3750066B1 (en) | Protection of infrastructure-as-a-service workloads in public cloud | |
US11385965B2 (en) | Automatically setting a dynamic restore policy in a native cloud environment | |
CN113886143B (zh) | 虚拟机持续数据保护方法、装置及数据恢复方法、装置 | |
CN108255638B (zh) | 一种快照回滚方法及装置 | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
CN106339278A (zh) | 一种网络文件系统的数据备份及恢复方法 | |
CN112596951B (zh) | 一种nas数据容灾方法、装置、设备及存储介质 | |
US8612799B2 (en) | Method and apparatus of backing up subversion repository | |
CN104615511A (zh) | 一种基于双中心的主机批量恢复处理方法及装置 | |
US20240311346A1 (en) | Storage tiering for computing system snapshots | |
CN113312205B (zh) | 数据校验方法、装置、存储介质和计算机设备 | |
CN109324931B (zh) | 在重复数据删除系统中实现vmware挂载恢复的方法 | |
CN110955557A (zh) | 数据验证处理方法、装置、存储介质以及处理器 | |
CN108874592B (zh) | 一种针对Log-structured存储引擎的数据冷备方法及系统 | |
US11995042B1 (en) | Fast recovery for replication corruptions | |
CN111966532A (zh) | 数据库的管理方法和装置、电子设备和介质 | |
CN112650733A (zh) | 一种智能合约状态数据的处理方法、系统与装置 | |
CN113821378B (zh) | 一种云硬盘备份方法、系统、存储介质及设备 | |
CN104809033A (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 |