CN116680121A - Io操作执行方法、装置、电子设备及存储介质 - Google Patents

Io操作执行方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116680121A
CN116680121A CN202310658829.XA CN202310658829A CN116680121A CN 116680121 A CN116680121 A CN 116680121A CN 202310658829 A CN202310658829 A CN 202310658829A CN 116680121 A CN116680121 A CN 116680121A
Authority
CN
China
Prior art keywords
file system
target file
identification
target
determining
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
Application number
CN202310658829.XA
Other languages
English (en)
Inventor
叶权
吉毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN202310658829.XA priority Critical patent/CN116680121A/zh
Publication of CN116680121A publication Critical patent/CN116680121A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5011Pool
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例涉及一种IO操作执行方法、装置、电子设备及存储介质,方法包括:接收同步的IO操作,确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识,根据所述系统状态标识,确定至少一个目标文件系统,在至少一个所述目标文件系统中,异步执行所述IO操作。由此,实现了降低存储层发生故障的概率,保证了存储层的可用性,降低了存储层故障恢复的复杂性和成本的同时,提高了IO操作的处理效率。

Description

IO操作执行方法、装置、电子设备及存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种IO操作执行方法、装置、电子设备及存储介质。
背景技术
随着科技的发展,数据的不断增加,分布式存储被广泛应用于大规模数据存储和应用。分布式存储是将数据分散存储在多台独立的设备上,每个设备可通过一个文件系统对数据进行存储。
然而,实际应用中,由于网络、数据一致性和同步、系统复杂性等原因导致文件系统在存储数据时容易出现故障,而一旦出现故障,可能会导致业务系统不可用。
现有技术中,在解决文件系统的故障时,一般通过两种方式解决,一是通过备份数据直接对该文件系统的故障数据进行定位和恢复;二是通过在业务层面构建高可用解决方案来解决存储层面的故障数据。然而,由于与业务系统对接的文件系统中存储了较多的实时数据,其与业务系统中的同步IO操作存在较大的依赖关系,因此,无论采用上述哪种方式解决文本系统的故障,都是十分复杂的,尤其在业务层面建立高可用的解决方案,其对技术人员的专业能力要求较高,还要了解业务系统的IO调用,这就增加了解决文本系统故障的成本。
发明内容
鉴于此,为解决现有技术中在文本系统出现故障时,无论采用上述哪种方式解决文本系统的故障,都是十分复杂的,尤其在业务层面建立高可用的解决方案,其对技术人员的专业能力要求较高,还要了解业务系统的IO调用,这就增加了解决文本系统故障的成本的技术问题,本发明实施例提供一种IO操作执行方法、装置、电子设备及存储介质。
第一方面,本发明实施例提供一种IO操作执行方法,所述方法包括:
接收同步的IO操作;
确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
根据所述系统状态标识,确定至少一个目标文件系统;
在至少一个所述目标文件系统中,异步执行所述IO操作。
作为一个可能的实现方式,所述根据所述系统状态标识,确定至少一个目标文件系统,包括:
将所述系统状态标识为第一标识的文件系统,确定为目标文件系统,所述第一标识用于表征可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,所述在至少一个所述目标文件系统中,异步执行所述IO操作,包括:
针对每个所述目标文件系统,对所述目标文件系统进行可用性检查,得到所述目标文件系统对应的检查结果;
若所述检查结果表征所述目标文件系统可用,则在所述目标文件系统中异步执行所述IO操作;
若所述检查结果表征所述目标文件系统不可用,则将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,在所述目标文件系统包括两个或两个以上的情况下,所述在至少一个所述目标文件系统中,异步执行所述IO操作,包括:
针对每个所述目标文件系统,确定所述目标文件系统的系统属性;
确定所述IO操作的镜像文件;
将所述镜像文件与所述系统属性进行匹配,得到目标镜像文件;
对所述目标镜像文件进行解析,得到目标IO操作;
将所述目标IO操作在所述目标文件系统中异步执行。
作为一个可能的实现方式,在所述在至少一个所述目标文件系统中,异步执行所述IO操作之后,还包括:
针对每个所述目标文件系统,监测所述IO操作在所述目标文件系统的执行时长;
确定所述执行时长是否大于预设的时长阈值;
在确定所述执行时长大于所述时长阈值的情况下,将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,所述方法还包括:
在确定所述执行时长小于或者等于所述时长阈值的情况下,获取所述IO操作在所述目标文件系统的执行结果;
在所述执行结果表征所述IO操作在所述目标文件系统中未被正确执行的情况下,将所述目标文件系统的系统状态标识更新为所述第二标识,并将所述第二标识写入每个所述文件系统。
作为一个可能的实现方式,在将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统之后,所述方法还包括:
确定非目标文件系统与目标文件系统的差异数据,所述目标文件系统的系统状态标识为所述第一标识,所述非目标文件系统的系统状态标识为所述第二标识;
定时在所述非目标文件系统中同步所述差异数据;
在同步完成所述差异数据的情况下,获取所述目标文件系统中已经打开的文件句柄;
根据所述文件句柄,在所述非目标文件系统中打开相应的文件;
将所述非目标文件系统的系统状态标识更新为所述第一标识,并将所述第一标识写入每个所述文件系统。
第二方面,本发明实施例提供一种IO操作执行装置,所述装置包括:
接收模块,用于接收同步的IO操作;
第一确定模块,用于确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
第二确定模块,用于根据所述系统状态标识,确定至少一个目标文件系统;
执行模块,用于在至少一个所述目标文件系统中,异步执行所述IO操作。
作为一个可能的实现方式,所述第二确定模块,具体用于:
将所述系统状态标识为第一标识的文件系统,确定为目标文件系统,所述第一标识用于表征可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,所述执行模块,包括:
检查子模块,用于针对每个所述目标文件系统,对所述目标文件系统进行可用性检查,得到所述目标文件系统对应的检查结果;
执行子模块,用于若所述检查结果表征所述目标文件系统可用,则在所述目标文件系统中异步执行所述IO操作;
更新子模块,用于若所述检查结果表征所述目标文件系统不可用,则将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,在所述目标文件系统包括两个或两个以上的情况下,所述执行模块,具体用于:
针对每个所述目标文件系统,确定所述目标文件系统的系统属性;
确定所述IO操作的镜像文件;
将所述镜像文件与所述系统属性进行匹配,得到目标镜像文件;
对所述目标镜像文件进行解析,得到目标IO操作;
将所述目标IO操作在所述目标文件系统中异步执行。
作为一个可能的实现方式,所述装置还包括:
监测模块,用于在所述在至少一个所述目标文件系统中,异步执行所述IO操作之后,针对每个所述目标文件系统,监测所述IO操作在所述目标文件系统的执行时长;
确定模块,用于确定所述执行时长是否大于预设的时长阈值;
更新模块,用于在确定所述执行时长大于所述时长阈值的情况下,将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行IO操作。
作为一个可能的实现方式,所述装置还包括:
执行结果获取模块,用于在确定所述执行时长小于或者等于所述时长阈值的情况下,获取所述IO操作在所述目标文件系统的执行结果;
写入模块,用于在所述执行结果表征所述IO操作在所述目标文件系统中未被正确执行的情况下,将所述目标文件系统的系统状态标识更新为所述第二标识,并将所述第二标识写入每个所述文件系统。
作为一个可能的实现方式,所述装置还包括:
差异数据确定模块,用于在将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统之后,确定非目标文件系统与目标文件系统的差异数据,所述目标文件系统的系统状态标识为所述第一标识,所述非目标文件系统的系统状态标识为所述第二标识;
同步模块,用于定时在所述非目标文件系统中同步所述差异数据;
句柄获取模块,用于在同步完成所述差异数据的情况下,获取所述目标文件系统中已经打开的文件句柄;
打开模块,用于根据所述文件句柄,在所述非目标文件系统中打开相应的文件;
第一标识更新模块,用于将所述非目标文件系统的系统状态标识更新为所述第一标识,并将所述第一标识写入每个所述文件系统。
第三方面,本发明实施例提供一种电子设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的IO操作执行程序,以实现第一方面中任一项所述的IO操作执行方法。
第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面中任一项所述的IO操作执行方法。
本发明实施例提供的技术方案,通过接收同步的IO操作,确定文件存储系统,从文件存储系统包括的至少两个文件系统中,确定每个文件系统的系统状态标识,根据系统状态标识,确定至少一个目标文件系统,并在至少一个目标文件系统中,异步执行IO操作。这一技术方案,通过将至少两个文件系统合并为一个文件存储系统,当一个文件系统发生故障时,可通过其他文件系统异步处理业务系统的同步IO操作,保证了通过至少一个目标文件系统异步处理业务系统的同步IO操作,也即,只有当至少两个文件系统同时发生故障时,存储层才会发生故障影响业务系统,同时由于目标文件系统对同步IO操作进行异步处理,因此,可提高IO操作的处理效率,实现了降低存储层发生故障的概率,保证了存储层的可用性,降低了存储层故障恢复的复杂性和成本的同时,提高了IO操作的处理效率。
附图说明
图1为本发明实施例提供的一种IO操作执行方法的实施例流程图;
图2为本发明实施例提供的一种IO操作执行系统的结构示意图;
图3为本发明实施例提供的一种IO操作执行装置的实施例框图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,为本发明实施例提供的一种IO操作执行方法的实施例流程图。如图1所示,该流程可包括以下步骤:
步骤101、接收同步的IO操作。
上述IO(Input/Output,输入/输出)操作指用户在业务层面(业务系统或应用程序)对文件存储系统(例如数据库或内存)的输入或输出操作。
可选的,上述IO操作在业务系统的类型为同步的IO操作。现有技术中,一般业务系统在文件存储系统中执行IO操作时同步执行,也即,执行完一个IO操作,在接收到返回结果后,再执行下一个IO操作。
在一实施例中,本发明实施例的执行主体可通过预设系统的IO操作接口,接收用户的IO操作,例如Linux系统的fuse模块提供的POSIX兼容的IO操作接口。
可选的,本发明实施例的执行主体可接收一个同步的IO操作,也可接收多个同步的IO操作,本发明实施例对此不做限制。
此外,本发明实施例的执行主体接收到的IO操作也可为异步的IO操作,本发明实施例对此不做限制。
步骤102、确定文件存储系统,从文件存储系统包括的至少两个文件系统中,确定每个文件系统的系统状态标识。
上述文件存储系统指业务系统对应的在存储层面的存储系统。
上述文件系统可为用于存储数据的文件系统,其可为NTFS(New Technology FileSystem,新技术文件系统),又可为CDFS(Compact Disc File System,光盘文件系统),还可为exFAT(Extended File Allocation Table File System,扩展文件分配表),本发明实施例对此不做限制。
上述系统状态标识用于标识对应的文件系统的系统状态,其可用于表征文件系统是否可用,也即,是否可以在该文件系统中执行IO操作。
可选的,上述系统状态标识可包括第一标识和第二标识,上述第一标识可用于表征对应的文件系统可用,上述第二标识可用于表征对应的文件系统不可用,本发明实施例对此不做限制。
现有技术中,一般通过一个文件系统对业务系统中的数据进行存储,但是,由于网络、数据一致性和同步、系统复杂性等原因导致文件系统在存储数据时容易出现故障,而一旦出现故障,业务服务则不可用,直至文件系统恢复运行,而修复文件系统故障又对专业技术人员有一定的专业技术要求,增加了恢复业务系统的难度。
基于此,本发明实施例中,上述文件存储系统可包括至少两个文件系统。通过将至少两个文件系统合并为一个文件存储系统,只有当至少两个文件系统同时发生故障时,上述文件存储系统才会发生故障,导致业务系统不可用,因此,可降低文件存储系统发生故障的概率。
举个例子,假定单一分布式文件系统故障发生的故障的概率为P1,通常这个值会在0.05%左右,较多的业务还无法接受这个可用性,可若是两个同样但单独的分布式文件系统同时发生故障,该概率则为P2=P1*P1=0.0025%,这个可用性是绝大数业务系统都可以接受的。
本发明实施例中,每个文件系统可对应的一个系统状态标识,以表征该文件系统是否可用。
在一实施例中,本发明实施例的执行主体可将所有文件系统的系统状态标识写入每个文件系统中,防止其中一个文件系统发生严重故障而无法获取每个文件系统的系统状态标识。可以理解的是,在将所有文件系统的系统状态标识写入每个文件系统时,还包括每个文件系统与系统状态标识之间的对应关系。
基于此,本发明实施例的执行主体在接收到同步的IO操作,并确定该IO操作对应的文件存储系统后,可从文件存储系统包括的至少两个文件系统的任一文件系统中获取每个文件系统的系统状态标识。可选的,该任一文件系统为可以获取系统状态标识的文件系统。
此外,本发明实施例的执行主体可将每个文件系统、对应的系统状态标识,以及两者之间的对应关系存储至预设的存储介质中。
基于此,本发明实施例的执行主体可从预设的存储介质中获取每个文件系统的系统状态标识。
步骤103、根据系统状态标识,确定至少一个目标文件系统。
上述目标文件系统指可在该文件系统中执行IO操作的文件系统。
本发明实施例中,可根据每个文件系统的系统状态标识,从文件存储系统包括的至少两个文件系统中确定至少一个可执行IO操作的目标文件系统。
具体的,由上述描述可知,每个文件系统对应的系统状态标识可包括第一标识和第二标识,该第一标识可用于表征可在该文件系统中执行IO操作,该第二标识可用于表征不可在该文件系统中执行IO操作。因此,可将系统状态标识为第一标识的文件系统,确定为目标文件系统,从而得到至少一个目标文件系统。
步骤104、在至少一个目标文件系统中,异步执行IO操作。
由于现有技术中,一般用户的IO操作均为同步的IO操作,也即,当上述IO操作为多个IO操作时,需将所有IO操作执行完成后,才可返回最终的执行结果,容易造成阻塞。其中,若是一个IO操作发生未正确执行,则会造成IO操作阻塞中断,业务系统无法继续使用文件系统,且对业务系统的重启操作也无法解决该问题,严重影响用户体验。
对此,本发明实施例的执行主体可在至少一个目标文件系统中,异步执行接收到的同步的IO操作,也即,每执行完成一个IO操作,则得到一个执行结果并返回,这样处理,不易造成IO操作阻塞,且当其中一个IO操作未被正确执行时,不会造成IO操作的阻塞中断,可提高IO操作的执行效率。
由于本发明实施例的执行主体利用Linux系统的fuse模块提供的POSIX兼容的IO操作接口来接收同步的IO操作,并通过该fuse模块将接收到的同步的IO操作在至少一个目标文件系统中执行,而fuse模块可实现对文件系统访问的回调,因此,每个IO操作在文件系统中的执行结果可通过该fuse模块进行获取,以确定每个IO操作是否被成功执行。
需要说明的是,由于在至少一个目标文件系统中异步执行IO操作,因此,当文件系统的系统状态标识为第一标识时,该第一标识可用于表征可在对应的文件系统中异步执行IO操作。当文件系统的系统状态标识为第二标识时,该第二标识可用于表征不可在对应的文件系统中异步执行IO操作。
在一实施例中,本发明实施例的执行主体在至少一个目标文件系统中,异步执行IO操作时,可针对每个目标文件系统,对该目标文件系统进行可用性检查,以检查该目标文件系统是否可用,得到该目标文件系统对应的检查结果。
可选的,若该检查结果表征目标文件系统可用,在可直接在该目标文件系统中异步执行该IO操作。
相反的,若该检查结果表征目标文件系统不可用,则将该目标文件系统的系统状态标识由第一标识更新为第二标识,并将该第二标识写入每个文件系统,上述第二标识可用于表征不可在对应的文件系统中异步执行IO操作,也即,将该文件系统隔离。
进一步地,可选的,在上述目标文件系统为一个的情况下,本发明实施例的执行主体可直接将接收到的同步的IO操作在该目标文件系统中异步执行。
相反的,在上述目标文件系统为两个或两个以上的情况下,可将接收到的同步的IO操作进行复制,并将复制得到的多个IO操作分别与一个目标文件系统进行匹配,并将匹配后的IO操作在目标文件系统中异步执行。
具体的,可针对每个目标文件系统,确定该目标文件系统的系统属性。该系统属性可用于表征目标文件系统的系统特征。之后,确定IO操作的镜像文件,并将该镜像文件与上述系统属性进行匹配,得到目标镜像文件。
之后,对该目标镜像文件进行解析,得到目标IO操作,可将该目标IO操作在目标文件系统中异步执行。
在一实施例中,为了防止在目标文件系统中异步执行IO操作时,该IO操作未被正确执行,却并未返回执行结果,导致对该目标文件系统中的错误认知,也即,认为该IO操作被正确执行,该目标文件系统可执行IO操作。本发明实施例的执行主体可在至少一个目标文件系统中,异步执行IO操作后,针对每个目标文件系统,监测该IO操作在目标文件系统的执行时长。之后,可确定该执行时长是否大于预设的时长阈值。
可选的,若确定该执行时长大于时长阈值,则说明该目标文件系统不可正确异步执行IO操作,因此,可将目标文件系统的系统状态标识更新为第二标识,并将该第二标识写入每个文件系统,该第二标识用于表征不可在对应的文件系统中异步执行IO操作。
相反的,若确定该执行时长小于或者等于时长阈值,则说明当前目标文件系统正在执行IO操作,因此,可获取IO操作在目标文件系统的执行结果。若获取到上述执行结果,说明目标文件系统已经执行完成IO操作。
此时,可确定该执行结果是否表征IO操作被正确执行,若该执行结果表征IO操作在目标文件系统中未被正确执行,则说明目标文件系统无法异步执行IO操作,因此,可将目标文件系统的系统状态标识更新为上述第二标识,并将该第二标识写入每个文件系统。
此外,在将目标文件系统的系统状态标识更新为第二标识,并将第二标识写入每个文件系统之后,可将系统状态标识为第一标识,也即可异步执行IO操作的文件系统确定为目标文件系统,并将系统状态标识为第二标识,也即,不可异步执行IO操作的文件系统确定为非目标文件系统。
之后,可确定非目标文件系统与目标文件系统的差异数据,并定时在非目标文件系统中同步该差异数据。
可选的,若可同步完成上述差异数据,则说明当前的非目标文件系统已经完成故障的修复,也即,可在该非目标文件系统中异步执行IO操作。此时,可获取目标文件系统中已经打开的文件句柄,并根据文件句柄,在该非目标文件系统中打开相应的文件,以同步非目标文件系统与目标文件系统的当前状态。
最后,可将该非目标文件系统的系统状态标识更新为第一标识,并将该第一标识写入每个文件系统,以说明可在该非目标文件系统中执行IO操作,也即,该非目标文件系统可作为目标文件系统。
本发明实施例提供的技术方案,通过接收同步的IO操作,确定文件存储系统,从该文件存储系统包括的至少两个文件存储系统中,确定每个文件系统的系统状态标识,根据系统状态标识,确定至少一个目标文件系统,在至少一个目标文件系统中,异步执行IO操作。这一技术方案,通过将至少两个文件系统合并为一个文件存储系统,当一个文件系统发生故障时,可通过其他文件系统异步处理业务系统的同步IO操作,保证了通过至少一个目标文件系统异步处理业务系统的同步IO操作,也即,只有当至少两个文件系统同时发生故障时,存储层才会发生故障影响业务系统,同时由于目标文件系统对同步IO操作进行异步处理,因此,可提高IO操作的处理效率,实现了降低存储层发生故障的概率,保证了存储层的可用性,降低了存储层故障恢复的复杂性和成本的同时,提高了IO操作的处理效率。
参见图2,为本发明实施例提供的一种IO操作执行系统的结构示意图。
如图2所示,该IO操作执行系统的结构可包括以下内容:
APP(Application,手机软件)、VFS(Virtual File Systems,虚拟文件系统)/Kernel(Real Time Operating System,实时操作系统)、/mirror(文件系统根目录)、fuse模块、fuse-api(Linux系统的fuse模块的IO操作接口)、mirrorfs(根文件系统镜像)、IOExec Pool(IO操作线程池)。
基于此,本发明实施例中,可基于上述IO操作执行系统执行以下操作:
1.用户提前分配好两个或多个文件系统供本发明实施例的执行主体做为底层实际存储使用。
2.通过linux fuse模块提供POSIX兼容的IO操作接口。
3.当用户的同步的IO操作(简称op)达到fuse时,本发明实施例的执行主体(也即IO Exec Pool)将开始运作。
4.op会被简单操作预处理和检查后,放入一个异步执行的线程池(简称:执行器)中。
5.执行器会将当前的op将同时在不同的文件系统上进行op操作。
6.执行器会对当前所有的文件系统进行可用性检查(也即,io test)。
7.执行器会对当前所有的op进行超时检测(timeout detect)。
8.最后可得到以下几种结果:
Case 1:某文件系统检查异常,将该文件系统正在执行的op结果判断为err,隔离该文件系统,不再执行新的op。
Case 2:某文件系统上的op执行超时,将该文件系统正在执行的op结果判断为err,隔离该文件系统,不再执行新的op。
Case 3:某文件系统上的op执行返回结果为err,其它文件系统执行正常结果为非err,隔离该文件系统,不再执行新的op。
Case 4:所有文件系统上的op执行返回结果均为err,按正常返回该错误。
Case 5:所有文件系统上的op执行返回结果均为正常,按正常返回执行结果。
其中,当有文件系统被隔离或重新加入时,需要将各文件系统的状态信息作为meta写入到所有文件系统,这里容忍写入失败。
此外,本发明实施例的执行主体还可包括数据同步模块。当某文件系统被判定为异常时,同步模块会定时尝试同步所有差异数据,当差异数据同步完成时,尝试重新标识为可用的文件系统,重新打开其它文件系统已打开的文件句柄。之后,可更新状态信息作为meta写入到所有文件系统中,并承接新的op。
本发明实施例提供的IO操作执行系统,可将同步阻塞的IO逻辑转为异步阻塞,允许IO操作失败切换,同时,通过超时机制,可以让上层业务快速失败,避免上层业务被阻塞的IO操作彻底卡死。另,作为低层一致的,业务无侵入的解决方案,让业务可以无变更的接入。涉及的该分布式存储实现了使用场景的业务均可以得到可用性提升,让那些对存储IO不太了解的技术开发人员也可以大胆的使用分布式存储,只要简单的做的IO异常处理即可,不需要对线程阻塞问题进一步适配。
参见图3,为本发明实施例提供的一种IO操作执行装置的实施例框图。
如图3所示,该装置可包括:
接收模块31,用于接收同步的IO操作;
第一确定模块32,用于确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
第二确定模块33,用于根据所述系统状态标识,确定至少一个目标文件系统;
执行模块34,用于在至少一个所述目标文件系统中,异步执行所述IO操作。
作为一个可能的实现方式,所述第二确定模块33,具体用于:
将所述系统状态标识为第一标识的文件系统,确定为目标文件系统,所述第一标识用于表征可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,所述执行模块34,包括(图中未示出):
检查子模块,用于针对每个所述目标文件系统,对所述目标文件系统进行可用性检查,得到所述目标文件系统对应的检查结果;
执行子模块,用于若所述检查结果表征所述目标文件系统可用,则在所述目标文件系统中异步执行所述IO操作;
更新子模块,用于若所述检查结果表征所述目标文件系统不可用,则将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
作为一个可能的实现方式,在所述目标文件系统包括两个或两个以上的情况下,所述执行模块34,具体用于:
针对每个所述目标文件系统,确定所述目标文件系统的系统属性;
确定所述IO操作的镜像文件;
将所述镜像文件与所述系统属性进行匹配,得到目标镜像文件;
对所述目标镜像文件进行解析,得到目标IO操作;
将所述目标IO操作在所述目标文件系统中异步执行。
作为一个可能的实现方式,所述装置还包括(图中未示出):
监测模块,用于在所述在至少一个所述目标文件系统中,异步执行所述IO操作之后,针对每个所述目标文件系统,监测所述IO操作在所述目标文件系统的执行时长;
确定模块,用于确定所述执行时长是否大于预设的时长阈值;
更新模块,用于在确定所述执行时长大于所述时长阈值的情况下,将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行IO操作。
作为一个可能的实现方式,所述装置还包括(图中未示出):
执行结果获取模块,用于在确定所述执行时长小于或者等于所述时长阈值的情况下,获取所述IO操作在所述目标文件系统的执行结果;
写入模块,用于在所述执行结果表征所述IO操作在所述目标文件系统中未被正确执行的情况下,将所述目标文件系统的系统状态标识更新为所述第二标识,并将所述第二标识写入每个所述文件系统。
作为一个可能的实现方式,所述装置还包括(图中未示出):
差异数据确定模块,用于在将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统之后,确定非目标文件系统与目标文件系统的差异数据,所述目标文件系统的系统状态标识为所述第一标识,所述非目标文件系统的系统状态标识为所述第二标识;
同步模块,用于定时在所述非目标文件系统中同步所述差异数据;
句柄获取模块,用于在同步完成所述差异数据的情况下,获取所述目标文件系统中已经打开的文件句柄;
打开模块,用于根据所述文件句柄,在所述非目标文件系统中打开相应的文件;
第一标识更新模块,用于将所述非目标文件系统的系统状态标识更新为所述第一标识,并将所述第一标识写入每个所述文件系统。
图4为本发明实施例提供的一种电子设备的结构示意图,图4所示的电子设备400包括:至少一个处理器401、存储器402、至少一个网络接口404和用户接口403。电子设备400中的各个组件通过总线系统405耦合在一起。可理解,总线系统405用于实现这些组件之间的连接通信。总线系统405除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统405。
其中,用户接口403可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等)。
可以理解,本发明实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器402存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统4021和应用程序4022。
其中,操作系统4021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序4022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序4022中。
在本发明实施例中,通过调用存储器402存储的程序或指令,具体的,可以是应用程序4022中存储的程序或指令,处理器401用于执行各方法实施例所提供的方法步骤,例如包括:
接收同步的IO操作;
确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
根据所述系统状态标识,确定至少一个目标文件系统;
在至少一个所述目标文件系统中,异步执行所述IO操作。
上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecificIntegrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的电子设备可以是如图4中所示的电子设备,可执行如图1中IO操作执行方法的所有步骤,进而实现图1所示IO操作执行方法的技术效果,具体请参照图1相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在电子设备侧执行的IO操作执行方法。
所述处理器用于执行存储器中存储的IO操作执行程序,以实现以下在电子设备侧执行的IO操作执行方法的步骤:
接收同步的IO操作;
确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
根据所述系统状态标识,确定至少一个目标文件系统;
在至少一个所述目标文件系统中,异步执行所述IO操作。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种IO操作执行方法,其特征在于,所述方法包括:
接收同步的IO操作;
确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
根据所述系统状态标识,确定至少一个目标文件系统;
在至少一个所述目标文件系统中,异步执行所述IO操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述系统状态标识,确定至少一个目标文件系统,包括:
将所述系统状态标识为第一标识的文件系统,确定为目标文件系统,所述第一标识用于表征可在对应的文件系统中异步执行所述IO操作。
3.根据权利要求2所述的方法,其特征在于,所述在至少一个所述目标文件系统中,异步执行所述IO操作,包括:
针对每个所述目标文件系统,对所述目标文件系统进行可用性检查,得到所述目标文件系统对应的检查结果;
若所述检查结果表征所述目标文件系统可用,则在所述目标文件系统中异步执行所述IO操作;
若所述检查结果表征所述目标文件系统不可用,则将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
4.根据权利要求1所述的方法,其特征在于,在所述目标文件系统包括两个或两个以上的情况下,所述在至少一个所述目标文件系统中,异步执行所述IO操作,包括:
针对每个所述目标文件系统,确定所述目标文件系统的系统属性;
确定所述IO操作的镜像文件;
将所述镜像文件与所述系统属性进行匹配,得到目标镜像文件;
对所述目标镜像文件进行解析,得到目标IO操作;
将所述目标IO操作在所述目标文件系统中异步执行。
5.根据权利要求2所述的方法,其特征在于,在所述在至少一个所述目标文件系统中,异步执行所述IO操作之后,还包括:
针对每个所述目标文件系统,监测所述IO操作在所述目标文件系统的执行时长;
确定所述执行时长是否大于预设的时长阈值;
在确定所述执行时长大于所述时长阈值的情况下,将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统,所述第二标识用于表征不可在对应的文件系统中异步执行所述IO操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在确定所述执行时长小于或者等于所述时长阈值的情况下,获取所述IO操作在所述目标文件系统的执行结果;
在所述执行结果表征所述IO操作在所述目标文件系统中未被正确执行的情况下,将所述目标文件系统的系统状态标识更新为所述第二标识,并将所述第二标识写入每个所述文件系统。
7.根据权利要求3或6所述的方法,其特征在于,在将所述目标文件系统的系统状态标识更新为第二标识,并将所述第二标识写入每个所述文件系统之后,所述方法还包括:
确定非目标文件系统与目标文件系统的差异数据,所述目标文件系统的系统状态标识为所述第一标识,所述非目标文件系统的系统状态标识为所述第二标识;
定时在所述非目标文件系统中同步所述差异数据;
在同步完成所述差异数据的情况下,获取所述目标文件系统中已经打开的文件句柄;
根据所述文件句柄,在所述非目标文件系统中打开相应的文件;
将所述非目标文件系统的系统状态标识更新为所述第一标识,并将所述第一标识写入每个所述文件系统。
8.一种IO操作执行装置,其特征在于,所述装置包括:
接收模块,用于接收同步的IO操作;
第一确定模块,用于确定文件存储系统,从所述文件存储系统包括的至少两个文件系统中,确定每个所述文件系统的系统状态标识;
第二确定模块,用于根据所述系统状态标识,确定至少一个目标文件系统;
执行模块,用于在至少一个所述目标文件系统中,异步执行所述IO操作。
9.一种电子设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的IO操作执行程序,以实现权利要求1~7中任一项所述的IO操作执行方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的IO操作执行方法。
CN202310658829.XA 2023-06-05 2023-06-05 Io操作执行方法、装置、电子设备及存储介质 Pending CN116680121A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310658829.XA CN116680121A (zh) 2023-06-05 2023-06-05 Io操作执行方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310658829.XA CN116680121A (zh) 2023-06-05 2023-06-05 Io操作执行方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116680121A true CN116680121A (zh) 2023-09-01

Family

ID=87790394

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310658829.XA Pending CN116680121A (zh) 2023-06-05 2023-06-05 Io操作执行方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116680121A (zh)

Similar Documents

Publication Publication Date Title
CN106716972B (zh) 半自动故障转移
US7650356B2 (en) Generating an optimized restore plan
US11144401B2 (en) Component aware incremental backup, restore, and reconciliation solution
US9454590B2 (en) Predicting validity of data replication prior to actual replication in a transaction processing system
TW201235840A (en) Error management across hardware and software layers
JPH0296849A (ja) Tpキューイングシステムにおける正確に1回のセマンティクス
CN113238924B (zh) 分布式图数据库系统中的混沌工程实现方法和系统
CN110659256A (zh) 多机房同步方法、计算设备及计算机存储介质
Lu et al. Cloud API issues: an empirical study and impact
US20050097141A1 (en) Autonomic filesystem recovery
WO2020211233A1 (zh) 批量数据编辑方法、装置、计算机设备及存储介质
CN114860846A (zh) 数据处理方法、装置及电子设备
CN107729541A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN113377719B (zh) 一种系统异常关机时间获取方法及系统
US20200233674A1 (en) Automatically configuring boot order in recovery operations
CN112416725A (zh) 一种压力测试方法及装置
CN116680121A (zh) Io操作执行方法、装置、电子设备及存储介质
CN114116330B (zh) 服务器性能测试方法、系统、终端及存储介质
CN115617668A (zh) 一种兼容性测试方法、装置及设备
CN114238324A (zh) 用于主机站点的检查方法及装置、电子设备及存储介质
CN114153503A (zh) 一种bios控制方法、装置、介质
CN111177241A (zh) 一种数据处理方法、装置、系统、电子设备及其存储介质
CN111857542A (zh) 用于管理存储系统的方法、设备和计算机程序产品
US11748354B2 (en) Data shape confidence
CN111404715B (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