一种管理文件系统的方法及装置与流程

文档序号:16146770发布日期:2018-12-05 16:33阅读:138来源:国知局

本申请涉及计算机技术领域,尤其涉及一种管理文件系统的方法及装置。

背景技术

计算机中的文件系统(filesystem,fs)要求文件结构完整,元数据之间、元数据和数据之间是一致的,其中元数据指用于描述数据属性的数据。但有时文件系统的一致性可能被破坏,如系统掉电时,内存中的数据会丢失,或者由于磁盘发生故障,如磁盘坏道等,都会破坏文件系统数据的一致性。为了检查和维护不一致的文件系统,文件系统会提供文件系统检查(fscheck,fsck)工具来方便用户检查和修复文件系统。

fsck工具会在挂载文件系统之前检查文件系统的一致性,例如在系统初启动时检查文件系统的一致性,或者,在重新加载文件系统时检查文件系统的一致性。fsck检查消耗的时间与文件系统对应的数据分区的大小以及该数据分区的文件数量相关,数据分区越大、文件数量越多,fsck检查消耗的时间越久。

目前,大数据业务要求数据分区的大小越来越大,数据分区中存储的数据越来越多,导致在挂载文件系统时需要耗费大量时间进行文件系统的一致性检查,使得用户不能及时使用文件系统。



技术实现要素:

本申请提供一种管理文件系统的方法及装置,用以解决现有技术中存在的挂载文件系统时的一致性检查导致用户不能及时使用文件系统的问题。

第一方面,本申请实施例提供一种管理文件系统的方法,包括:在系统启动挂载文件系统时,以及在系统运行后重新挂载文件系统时,将需要挂载的文件系统视为符合一致性要求,不对文件系统进行一致性检查,直接挂载文件系统。在应用读取文件文件系统中的目标文件时,文件系统会对目标文件进行校验,若校验值错误,则确定目标文件发生错误,确定文件系统上的数据一致性被破坏,调用fsck工具对文件系统进行一致性修复。

上述技术方案中,节点在挂载文件系统之前,不对文件系统进行一致性检查,使得文件系统能够及时挂载,用户能够尽快使用文件系统。在通过文件系统读取文件的过程中,一旦发现文件错误,则可以调用fsck工具对文件系统进行修复,保证文件系统的数据一致性。在文件系统中文件出现错误的可能性较低时,通过fsck对文件系统进行修复的次数很少,与现有技术中在每次挂载文件系统之前进行一致性检查的方案相比,可以有效减少fsck检查的次数,减少一致性检查的耗时,进而可以提高文件系统的效率。

作为一种可选的设计,在文件系统中的所述目标文件的第一校验值不正确时,文件系统的可靠性降低,卸载所述文件系统,保障业务的正确性,保证用户获得正确的文件。

作为一种可选的设计,在文件系统中的所述目标文件的第一校验值不正确时,文件系统中的大部分文件可能仍然是正确的,文件系统仍然具有向用户提供正确文件的能力,不卸载文件系统,而是将文件系统设置为只读模式,使得用户能够继续访问文件系统中的没有发生错误的文件,提高整个文件系统的性能。而且,将文件系统设置为只读模式,能够避免新数据被写入文件系统后发生错误,保证数据的可靠性。

作为一种可选的设计,如果在文件系统中的所述目标文件的第一校验值不正确时卸载所述文件系统,则在通过所述fsck工具修复所述文件系统之后,重新挂载文件系统,并将文件系统设置为可读可写的模式,以使文件系统可以继续向用户提供服务。

作为一种可选的设计,如果在文件系统中的所述目标文件的第一校验值不正确时将文件系统设置为只读模式,则在通过所述fsck工具修复所述文件系统之后,将所述文件系统设置为可读可写的模式,以使文件系统可以继续向用户提供服务。

作为一种可选的设计,如果文件系统对目标文件进行校验后确定目标文件没有发生错误,则通过文件系统读取目标文件并将目标文件发送给应用,应用在从文件系统获取文件后,对文件进行二次校验,进一步保证文件的正确性,提高业务的可靠性。并且,应用在确定目标文件错误后,可以从其他文件系统读取该文件的备份数据,并利用该备份对错误的文件进行修复,提高文件系统中数据的可靠性。

作为一种可选的设计,两个文件系统可以均存储同一文件,这两个文件系统对应的数据分区可以区位于同一存储设备(如磁盘),也可以分别位于在同一节点的不同存储设备上,还可以分别位于两个不同的节点中。

作为一种可选的方式,应用在确对目标文件进行二次校验,确定目标文件发生错误后,停用存储该目标文件的数据分区,以保证业务的正确性,保证用户获得正确的文件。

第二方面,本申请实施例提供一种管理文件系统的装置,该管理文件系统的装置用于执行上述第一方面或第一方面的任意可选的设计中的方法。具体的,该管理文件系统的装置包括用于执行上述第一方面或第一方面的任意可选的设计中的方法的模块。

第三方面,本申请实施例提供一种管理文件系统的装置,包括:存储器、处理器以及通信接口。存储器存储有计算机指令,处理器通过通信接口与其他节点进行通信,并通过调用所述存储器中存储的计算机指令,以执行上述第一方面或第一方面的任意可选的设计中的方法。

第四方面,本申请实施例提供一种计算机可读存储介质,所述可读存储介质中存储有计算机指令,所述指令在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可选的设计中的方法。

附图说明

图1为本申请实施例提供的一种分布式文件系统的示意图;

图2为本申请实施例提供的管理文件系统的方法的流程示意图;

图3为本申请实施例中文件系统校验数据的示意图;

图4为本申请实施例提供的管理文件系统的方法的另一流程示意图;

图5为本申请实施例中管理文件系统的示意图;

图6为本申请实施例中管理文件系统的装置的示意图;

图7为本申请实施例中管理文件系统的装置的另一示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。

现有技术中,在系统启动或重新挂载文件系统时,需要对文件系统进行一致性检查,而一致性检查将耗费大量的时间,使得用户不能及时使用文件系统。而在在一些网络文件系统中,文件的一致性由远端存储服务器来维护,但是,远端存储服务器会成为文件系统的瓶颈,制约文件系统的访问效率,而且,一旦远端存储服务器出现故障,将导致整个文件系统不可访问。

本申请提供一种管理文件系统的方法及装置,用以解决现有技术中存在的挂载文件系统时的一致性检查导致用户不能及时使用文件系统的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

需要理解的是,本申请中所涉及的多个,是指两个或两个以上。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

本申请可以应用于分布式度系统,该分布式系统中的两个或多个节点可以形成高可用性(highavailable,ha)集群。如图1所示的系统中,节点1包括数据分区1~3,每个数据分区对应一个文件系统,分别为fs1~fs3,同理,节点2包括数据分区4~6,对应文件系统fs4~fs6。节点1与节点2上运行有为客户端提供服务的同一应用,在节点1中的文件系统fs2中保存的数据发生错误,导致节点1上的应用不能提供服务时,节点2上的应用能够立即接续节点1上的应用为客户端提供服务,实现业务的不中断或短暂中断。本申请实施例中互为ha的不同节点之间的关系可以为:主备、全活、n+m,所谓主备指的是其中的一个节点为主节点(即活动节点),其余节点为备节点;全活指的是所有节点均为活动节点;n+m指的是其中的n个节点为活动节点,m个节点为备节点。

图2为本申请实施例提供的管理文件系统的方法的流程示意图,该方法可以包括如下处理:

步骤101、在未对第一数据分区对应的第一文件系统进行一致性检查时,挂载第一文件系统。

本申请实施例中,在系统启动挂载文件系统时,以及在系统运行后重新挂载文件系统时,将需要挂载的文件系统视为符合一致性要求,不对文件系统进行一致性检查,直接挂载文件系统。

步骤102、在通过第一文件系统读取目标文件时,判断目标文件的第一校验值是否正确。

第一文件系统为任一节点上的任一数据分区对应的文件系统。在应用读取文件第一文件系统中的目标文件时,第一文件系统会对目标文件进行校验,例如,计算目标文件的第一校验值,将第一校验值与预存的校验值进行比较,若不一致,则确定目标文件发生错误。上述第一校验值可以有多种实现方式,对应多种校验手段。例如,参照图3,在向第一文件系统写入文件的数据时,记录该文件(或文件的数据块)的校验值,比如校验和(checksum)、哈希(hash)值、循环冗余校验(cyclicredundancycheck,crc)等。然后,在应用从第一文件系统读取该文件时,第一文件系统计算文件(或文件的数据块)的数据校验值,将计算的数据校验值与存储的数据校验值进行比较,若不一致,则表明文件发生错误。

步骤103、若目标文件的第一校验值不正确,则通过文件系统检查fsck工具修复第一文件系统。

在第一文件系统通过计算数据校验值确定目标文件发生错误后,确定第一文件系统上的数据一致性被破坏,调用fsck工具对第一文件系统进行一致性修复,例如,fsck工具可以读取日志文件,根据读取的日志文件对第一文件系统中的文件进行修复。对于fsck修复第一文件系统的具体过程,请参照现有技术中各种技术手段,在此不予详述。

上述技术方案中,节点在挂载文件系统之前,不对文件系统进行一致性检查,使得文件系统能够及时挂载,用户能够尽快使用文件系统。在通过文件系统读取文件的过程中,一旦发现文件错误,则可以调用fsck工具对文件系统进行修复,保证文件系统的数据一致性。可以看出,在文件系统中文件出现错误的可能性较低时,通过fsck对文件系统进行修复的次数很少,与现有技术中在每次挂载文件系统之前进行一致性检查的方案相比,本申请实施例提供的方案能够有效减少fsck检查的次数,减少一致性检查的耗时,提高文件系统的效率。不仅如此,在挂载后的文件系统中可能存在数据不一致错误后,ha系统中的备用节点或其他活动节点依然能够向外提供服务,用户依然能够继续读取目标文件。

作为一种可选的设计,参照图4,在步骤102之后,还包括如下步骤:

步骤104、若目标文件的第一校验值不正确,将第一文件系统设置为只读模式或卸载第一文件系统。

目标文件的第一校验值不正确表明目标文件发生错误,第一文件系统的可靠性降低,卸载第一文件系统可以保证业务的正确性,保证用户获得正确的文件。

另一种可能的实现方式为:不卸载第一文件系统,而是将第一文件系统设置为只读模式。这是因为虽然第一文件系统中的第一文件错误,但第一文件系统中的大部分文件通常仍然是正确的,第一文件系统仍然具有向用户提供正确文件的能力。但由于第一文件系统中已经存在发生错误的文件,而该错误可能是第一文件系统对应的第一数据分区的存储区发生错误,继续向第一文件系统中写入新数据,该新数据有可能发生错误,不能保证新写入第一文件系统的数据的可靠性。因此,将第一文件系统设置为只读模式,既使得用户能够继续访问第一文件系统中的没有发生错误的文件,提高整个文件系统的性能,又能避免新数据被写入第一文件系统,保证数据的可靠性。

作为一种可选的设计,在步骤103以及步骤104之后,若fsck工具成功修复第一文件系统,则可以继续通过第一文件系统向外提供读写文件的服务。具体的,如果在步骤104中将第一文件系统设置为只读模式,则在fsck工具成功修复第一文件系统后将第一文件系统设置为可读可写的模式。如果在步骤104中卸载第一文件系统,则在fsck工具成功修复第一文件系统后重新挂载第一文件系统,并将第一文件系统设置为可读可写的模式。上述技术方案能够及时修复发生一致性错误的文件系统,并在修复成功后配置文件系统继续向外提供服务。

作为一种可选的设计,若fsck工具成功修复第一文件系统,第一文件系统可以通知使用第一文件系统的应用,第一文件系统已恢复,应用可以继续访问第一文件系统。

作为一种可选的设计,继续参照图4,在步骤102之后,还包括如下步骤:

步骤105、若目标文件的第一校验值正确,可以通过第一文件系统读取目标文件,若成功读取到目标文件时向请求目标文件的应用发送该目标文件。

步骤106、通过上述应用判断目标文件的第二校验值是否正确,第二校验值与第一校验值不同。第二校验值与第一校验值可以为同一类型的校验值,例如,第一校验值与第二校验值均为目标文件(或目标文件的数据块)的校验和,但是,由于计算两个校验和的具体算法不同,导致第一校验值与第二校验值不同。另外,第一校验值与第二校验值也可以为不同类型的校验值,例如第一校验值为校验和,第二校验值为哈希值。上述应用在接收第一文件系统返回的目标文件之后,可以根据第二校验值对目标文件进行二次校验,以确保业务的正确性。

步骤107、若目标文件的第二校验值不正确,则可以从存储有目标文件的备份数据的第二数据分区对应的第二文件系统中获得目标文件的数据,并根据第二文件系统中目标文件的数据对第一文件系统中目标文件的数据进行恢复。

在第二校验值不正确时,表明虽然目标文件通过第一文件系统的校验,但仍然存在错误,应用可以向存储有目标文件的备份数据的另一数据分区(即第二数据分区)的第二文件系统中读取该目标文件,并在第二文件系统中目标文件正确时,根据第二文件系统中目标文件对第一文件系统中的目标文件进行修复。上述第二数据分区与第一数据分区可以位于同一存储设备(如磁盘),也可以分别位于在同一节点的不同存储设备上,还可以分别位于两个不同的节点中。

上述技术方案中,应用在从文件系统获取文件后,对文件进行二次校验,进一步保证文件的正确性,提高业务的可靠性。并且,应用在确定目标文件错误后,可以从其他文件系统读取该文件的备份数据,并利用该备份对错误的文件进行修复,提高文件系统中数据的可靠性。

作为一种可选的方式,应用在确定目标文件的第二校验值不正确之后,则停用该第一数据分区,以保证业务的正确性,保证用户获得正确的文件。

图5为本申请实施例中管理文件系统的一种可能的实现方式的示意图,图中的os指节点的操作系统(operatingsystem),fsck工具可以通过硬件芯片实现,也可以通过软件模块实现,即由节点的处理器运行计算机程序实现。在图5的实现方式中,在os启动时,不运行fsck工具对文件系统进行一致性检查,而是直接挂载文件系统,应用可以访问挂载的文件系统。在使用文件系统的过程中,如果发现文件系统中存在一致性错误,应用停用该存在一致性错误的文件系统,并调用fsck工具对该文件系统进行修复。在修复成功后,fsck工具或被修复的文件系统可以通知应用,使应用可以恢复继续访问已修复的文件系统。

图6为本申请实施例提供的种管理文件系统的装置的示意图,该装置包括:

挂载模块201,用于在未对第一数据分区对应的第一文件系统进行一致性检查时,挂载所述第一文件系统;

判断模块202,用于在通过所述第一文件系统读取目标文件时,判断所述目标文件的第一校验值是否正确;

修复模块203,用于在所述目标文件的所述第一校验值不正确时,通过文件系统检查fsck工具修复所述第一文件系统。

可选的,该装置还包括:

配置模块204,用于在所述目标文件的第一校验值不正确时,将所述第一文件系统设置为只读模式或卸载所述第一文件系统。

可选的,所述配置模块204还用于:在所述修复模块203通过所述fsck工具修复所述第一文件系统之后,若所述第一文件系统被设置为只读模式,则将所述第一文件系统设置为可读写状态;或者,若所述第一文件系统被卸载,则挂载所述第一文件系统。

可选的,该装置还包括:

发送模块205,用于在所述判断模块判断出所述目标文件的所述第一校验值正确之后,可以通过第一文件系统读取目标文件,若成功读取到目标文件时,向请求所述目标文件的应用发送所述目标文件;

第二判断模块206,用于通过所述应用判断所述目标文件的第二校验值是否正确,所述第二校验值与所述第一校验值不同;

第二修复模块207,用于在所述目标文件的所述第二校验值不正确时,从存储有所述目标文件的备份数据的第二数据分区对应的第二文件系统中获得所述目标文件的数据;根据所述第二文件系统中所述目标文件的数据对所述第一文件系统中所述目标文件的数据进行恢复。

可选的,所述第一数据分区与所述第二数据分区位于不同的服务器上。

本申请实施例中对管理文件系统的装置的模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

其中,集成的模块可以采用硬件的形式实现时,如图7所示,管理文件系统的装置可以包括处理器301。上述模块对应的实体的硬件可以为处理器301。处理器301,可以是一个中央处理模块(centralprocessingunit,cpu),或者为数字处理模块等等。管理文件系统的装置还可以包括通信接口302,处理器301通过通信接口302与其他节点进行通信。该管理文件系统的装置还包括:存储器303,用于存储处理器301执行的程序。存储器301可以是非易失性存储器,比如硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram)。存储器303是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

处理器301用于执行存储器303存储的程序代码,具体用于执行图2、图4或图5所示实施例的方法。管理文件系统的装置的实施方式可以参见图2、图4或图5所示实施例的方法,本申请在此不再赘述。

本申请实施例中不限定上述通信接口302、处理器301以及存储器303之间的具体连接介质。本申请实施例在图7中以存储器303、处理器301以及通信接口302之间通过总线连接,总线在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本发明实施例还提供了一种计算机可读存储介质,用于存储为执行上述处理器所需执行的计算机软件指令,其包含用于执行上述处理器所需执行的程序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1