运行多个文件系统的文件服务器的内部写方法和服务器的制造方法

文档序号:6636023阅读:207来源:国知局
运行多个文件系统的文件服务器的内部写方法和服务器的制造方法
【专利摘要】本发明公开了一种运行多个文件系统的文件服务器的内部写方法和服务器,该方法为:当所述文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所述所有文件系统的内部写;启动第一文件系统的内部写;其中,所述第一文件系统为所有文件系统中脏数据量最小的文件系统,所述第一文件系统的内部写为将所述缓存中第一文件系统的脏数据写入硬盘的操作。该方法避免了因文件服务器的内存不足导致文件系统被设置为写保护状态,引起文件系统的如创建、删除、修改等业务中断的问题。
【专利说明】运行多个文件系统的文件服务器的内部写方法和服务器

【技术领域】
[0001]本发明涉及计算机领域,尤其涉及一种运行多个文件系统的文件服务器的内部写方法和服务器。

【背景技术】
[0002]同一文件服务器通常支持同时运行多个文件系统,由于文件服务器的内存有限,不可避免的会存在多个文件系统同时抢占文件服务器的内存的情况。如图1所示,为现有技术下多个文件系统的内部写示意图,文件系统1、文件系统2和文件系统3同时进行内部写,即各文件系统同时进行内部写且各文件系统按照检查点(Checkpoint)的顺序进行内部写。其中,一个事务对应文件系统的一个检查点上的元数据和数据,每个检查点上文件系统的元数据和数据均是一致的;内部写是指文件系统在高速缓冲存储器(Cache)的分区中的脏数据写入硬盘,脏数据是指缓存到cache中的数据块已经修改了,但是还没写入到硬盘中的数据。
[0003]为了提升主机的响应速度,文件系统通常先将数据存储到为该文件系统分配的Cache的分区中,然后利用后台程序,进行内部写。文件系统内部需要按照检查点的先后顺序进行内部写,如果前一个检查点的内部写还未完成,那么下一个检查点的内部写将被迫等待。文件系统在进行内部写的过程中,可能还需要另外申请文件服务器的内存,用于缓存进行内部写的过程中产生的中间数据以及写时拷贝(Copy on Write)的间接块信息等。如果在某个检查点进行内部写,由于文件服务器的内存不足导致申请占用内存失败时,将导致该检查点的内部写无法完成。由于各个文件系统同时进行内部写,文件服务器的内存不足,将导致各个文件系统的内部写均无法完成,各文件系统会直接将文件系统状态设置为写保护状态,拒绝主机写10,各文件系统的如创建、删除、修改等业务均将中断。


【发明内容】

[0004]本发明实施例提供一种运行多个文件系统的文件服务器的内部写方法和服务器,用以解决现有技术中因文件服务器的内存不足导致文件系统状态被设置为写保护状态,弓丨起文件系统的如创建、删除、修改等业务中断的问题。
[0005]第一方面,本发明实施例提供了一种运行多个文件系统的文件服务器的内部写方法,该方法包括:
[0006]当所述文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所述所有文件系统的内部写;
[0007]启动第一文件系统的内部写;其中,所述第一文件系统为所有文件系统中脏数据量最小的文件系统,所述第一文件系统的内部写为将所述Cache中第一文件系统的脏数据写入硬盘的操作。
[0008]结合第一方面,在第一方面的第一种可能的实现方式中,所述方法还包括:
[0009]当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间大于预设阈值时,启动除所述第一文件系统外的其他文件系统的内部写。
[0010]结合第一方面,在第一方面的第二种可能的实现方式中,所述方法还包括:
[0011]当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间小于预设阈值时,从除所述第一文件系统外的其他文件系统中选择第二文件系统,启动所述第二文件系统的内部写;其中,所述第二文件系统为除所述第一文件系统外的其他文件系统中脏数据量最小的文件系统。
[0012]结合第一方面,在第一方面的第三种可能的实现方式中,所述方法还包括:
[0013]当所述第一文件系统的内部写失败,则将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
[0014]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,还包括:
[0015]将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写,在所述第一文件系统的任意一个检查点的内部写完成后,将所述第一文件系统的与所述任意一个检查点对应的的根节点写入硬盘。
[0016]第二方面,本发明实施例提供了一种运行多个文件系统的文件服务器,该文件服务器包括:
[0017]停止单元,用于当所述文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所述所有文件系统的内部写;
[0018]启动单元,用于启动第一文件系统的内部写;其中,所述第一文件系统为所有文件系统中脏数据量最小的文件系统,所述第一文件系统的内部写为将所述Cache中第一文件系统的脏数据写入硬盘的操作。
[0019]结合第二方面,在第二方面的第一种可能的实现方式中,所述启动单元还用于:
[0020]当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间大于预设阈值时,启动除所述第一文件系统外的其他文件系统的内部写。
[0021]结合第二方面,在第二方面的第二种可能的实现方式中,所述启动单元还用于:
[0022]当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间小于预设阈值时,从除所述第一文件系统外的其他文件系统中选择第二文件系统,启动所述第二文件系统的内部写;其中,所述第二文件系统为除所述第一文件系统外的其他文件系统中脏数据量最小的文件系统。
[0023]结合第二方面,在第二方面的第三种可能的实现方式中,所述启动单元还用于:
[0024]当所述第一文件系统的内部写失败,则将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
[0025]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述启动单元还用于:
[0026]将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写,在所述第一文件系统的任意一个检查点的内部写完成后,将所述第一文件系统的与所述任意一个检查点对应的的根节点写入硬盘。
[0027]第三方面,本发明实施例提供了一种运行多个文件系统的文件服务器,包括中央处理单元和内存,所述内存存储计算机指令,所述中央处理单元执行所述计算机指令用于执行本发明实施例第一方面或第一方面的第一至四任一可能的实施方式。
[0028]利用本发明实施例提供的方案,当多个文件系统在内部写的过程中遇到文件服务器的内存不足的情况时,通过停止所有文件系统的内部写然后依次开启文件系统的内部写,以及在单文件系统内以单个文件或目录为单位进行内部写的方法,避免了因内存不足导致文件系统被设置为写保护状态,引起文件系统的如创建、删除、修改等业务中断的问题。

【专利附图】

【附图说明】
[0029]图1为现有技术下多个文件系统的内部写示意图;
[0030]图2为本发明实施例提供的一种运行多个文件系统的文件服务器的内部写方法的流程图;
[0031]图3为本发明实施例多个文件系统的内部写示意图;
[0032]图4为本发明实施例单个文件系统内部的内部写示意图;
[0033]图5为本发明实施例提供的一种文件服务器的结构图。

【具体实施方式】
[0034]本发明实施例提供了一种运行多个文件系统的文件服务器的内部写方法和服务器,当多个文件系统在内部写的过程中遇到文件服务器的内存不足的情况时,通过停止所有文件系统的内部写然后依次开启文件系统的内部写的方法,避免了因文件服务器的内存不足导致文件系统被设置为写保护状态,引起文件系统的如创建、删除、修改等业务中断的冋题。
[0035]下面结合说明书附图和各实施例对本发明技术方案进行说明。
[0036]参阅图2所示,本发明实施例提供了一种运行多个文件系统的文件服务器的内部写方法,该方法的实施流程如下:
[0037]步骤201:当文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所有文件系统的内部写。
[0038]任意一个文件系统在内部写的过程中发现文件服务器的内存不足时,即刻上报到文件服务器,文件服务器根据上报的内存不足的消息,遍历各个文件系统,调用文件系统暂停内部写的接口,以停止所有文件系统的内部写。
[0039]但是,在停止所有文件系统的内部写的过程中,文件服务器不会中断所有文件系统的外部写,外部写为将接收的用户数据写入Cache的操作。因为文件系统的外部写不中断,即表示主机写1不中断,从而文件系统对外的业务不会中断。
[0040]步骤202:启动第一文件系统的内部写;其中,第一文件系统为所有文件系统中脏数据量最小的文件系统,第一文件系统的内部写为将Cache中第一文件系统的脏数据写入硬盘的操作。
[0041 ] 其中,脏数据包含了文件系统的数据以及元数据。
[0042]具体地,文件服务器分别获取Cache中缓存的各个文件系统对应的脏数据量,从中筛选出脏数据量最小的文件系统,并仅启动该脏数据量最小的文件系统的内部写。
[0043]例如,如图3所示,若文件系统I为被选中的脏数据量最小的文件系统,那么文件系统I将重新启动内部写,按照检查点的顺序依次将检查点1、检查点2、检查点3的脏数据写入硬盘,而文件系统2和文件系统3仍处于内部写停止的状态。如此,文件服务器将其内部多个文件系统同时进行内部写的方式,转换为顺序进行内部写的方式。
[0044]上述第一文件系统被选中开启内部写后,无论能否成功将Cache中的脏数据写入硬盘,均将内部写的结果上报给文件服务器。
[0045]当第一文件系统的内部写成功,并且文件服务器的内存的剩余空间大于预设阈值时,文件服务器便启动除第一文件系统外的其他文件系统的内部写。
[0046]当第一文件系统的内部写成功,并且文件服务器的内存的剩余空间小于预设阈值时,文件服务器便从除第一文件系统外的其他文件系统中选择第二文件系统,启动第二文件系统的内部写;其中,第二文件系统为除第一文件系统外的其他文件系统中脏数据量最小的文件系统。
[0047]当第一文件系统的内部写失败,文件服务器则将第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
[0048]例如,如图4所示,文件系统I在内部写检查点I的脏数据时,将文件1、文件2、文件3、目录4分别作为一组,首先将组成文件I的块(Chunk)O和块I同时写入硬盘,完成后再将文件2的块0、块1、块2写入硬盘,依次类推,直至将组成目录4的块O写入硬盘,从而完成将检查点I的脏数据全部写入硬盘。如此,文件服务器将同一文件系统内部同一检查点的多个文件和目录同时写入硬盘的方式,转换为以单个文件或目录为一组、分组写入硬盘的方式。
[0049]现有技术中,文件系统内部同一检查点的文件和目录是同时写入硬盘的,在所有检查点的文件、目录和元数据写入硬盘之后,文件系统再将该文件系统的根节点写入硬盘。这里,文件系统的根节点可以理解为一种指针,其指向了该文件系统的所有文件、目录和元数据在硬盘上的存储地址。当遭遇非正常断电等特殊情况时,文件服务器正常开机后硬盘中的文件、目录和元数据都将处在同一个检查点,即同一检查点的所有文件和目录要么全部有效,要么全部无效,这是文件系统的一致性。
[0050]而本发明实施例在文件系统内部采用了将同一检查点的文件和目录按照单个文件或目录分组进行内部写的方式,为了维持文件系统的一致性,防止出现当遭遇非正常断电等特殊情况文件服务器正常开机后,硬盘中同一检查点对应的文件、目录和元数据部分有效、部分无效的情况,文件服务器将第一文件系统的脏数据以单个文件或单个目录为单位进行内部写,在第一文件系统的一个检查点A的内部写完成后,将第一文件系统的与检查点A对应的的根节点写入硬盘,该根节点指向了该检查点A的文件、目录及元数据在硬盘上的存储地址。如此,只要该检查点A的根节点没有被写入硬盘,已写入硬盘的文件和目录对于文件服务器而言都是不可见的,并且元数据也不会生效,从而保证了文件系统的一致性;其中,检查点A表示文件系统的一个检查点。
[0051]参阅图5所示,本发明实施例提供了一种文件服务器50,用于实现本发明图2所示的运行多个文件系统的文件服务器的内部写方法,该文件服务器50包括:
[0052]停止单元501,用于当文件服务器50的内存的剩余空间不能够满足所有文件系统的需求时,停止所有文件系统的内部写。
[0053]启动单元502,用于启动第一文件系统的内部写;其中,第一文件系统为所有文件系统中脏数据量最小的文件系统,第一文件系统的内部写为将Cache中第一文件系统的脏数据写入硬盘的操作。
[0054]进一步地,在所有文件系统的内部写停止的过程中,所有文件系统的外部写并不中断,外部写为将接收的用户数据写入Cache的操作。
[0055]进一步地,当第一文件系统的内部写成功,并且文件服务器50的内存的剩余空间大于预设阈值时,启动单元502将启动除第一文件系统外的其他文件系统的内部写。
[0056]当第一文件系统的内部写成功,并且文件服务器50的内存的剩余空间小于预设阈值时,启动单元502将从除第一文件系统外的其他文件系统中选择第二文件系统,启动第二文件系统的内部写;其中,第二文件系统为除第一文件系统外的其他文件系统中脏数据量最小的文件系统。
[0057]当第一文件系统的内部写失败,则启动单元502将第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
[0058]进一步地,启动单元502将第一文件系统的脏数据以单个文件或单个目录为单位进行内部写时,在第一文件系统的任意一个检查点的内部写完成后,启动单元502将第一文件系统的与该任意一个检查点对应的的根节点写入硬盘。
[0059]本发明实施例提供了一种运行多个文件系统的文件服务器,包括中央处理单元和内存,所述内存存储计算机指令,所述中央处理单元执行所述计算机指令用于执行本发明实施例描述的任一方法。
[0060]综上所述,本发明实施例提供的技术方案,当多个文件系统在内部写的过程中遇到文件服务器的内存不足的情况时,通过停止所有文件系统的内部写然后依次开启文件系统的内部写,以及在单文件系统内部将同一检查点的数据以单个文件或目录为单位进行内部写的方式,并且在这个过程中不中断文件系统的外部写,从而避免了因文件服务器的内存不足导致文件系统被设置为写保护状态,引起文件系统的如创建、删除、修改等业务中断的问题。
[0061]本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机非易失性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0062]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0063]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0064]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0065]尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0066]显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
【权利要求】
1.一种运行多个文件系统的文件服务器的内部写方法,其特征在于,包括: 当所述文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所述所有文件系统的内部写; 启动第一文件系统的内部写;其中,所述第一文件系统为所有文件系统中脏数据量最小的文件系统,所述第一文件系统的内部写为将所述缓存中第一文件系统的脏数据写入硬盘的操作。
2.如权利要求1所述的方法,其特征在于,所述方法还包括: 当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间大于预设阈值时,启动除所述第一文件系统外的其他文件系统的内部写。
3.如权利要求1所述的方法,其特征在于,所述方法还包括: 当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间小于预设阈值时,从除所述第一文件系统外的其他文件系统中选择第二文件系统,启动所述第二文件系统的内部写;其中,所述第二文件系统为除所述第一文件系统外的其他文件系统中脏数据量最小的文件系统。
4.如权利要求1所述的方法,其特征在于,所述方法还包括: 当所述第一文件系统的内部写失败,则将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
5.如权利要求4所述的方法,其特征在于,还包括: 将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写,在所述第一文件系统的任意一个检查点的内部写完成后,将所述第一文件系统的与所述任意一个检查点对应的的根节点写入硬盘。
6.一种运行多个文件系统的文件服务器,其特征在于,包括: 停止单元,用于当所述文件服务器的内存的剩余空间不能够满足所有文件系统的需求时,停止所述所有文件系统的内部写; 启动单元,用于启动第一文件系统的内部写;其中,所述第一文件系统为所有文件系统中脏数据量最小的文件系统,所述第一文件系统的内部写为将所述缓存中第一文件系统的脏数据写入硬盘的操作。
7.如权利要求6所述的文件服务器,其特征在于,所述启动单元还用于: 当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间大于预设阈值时,启动除所述第一文件系统外的其他文件系统的内部写。
8.如权利要求6所述的文件服务器,其特征在于,所述启动单元还用于: 当所述第一文件系统的内部写成功,并且所述文件服务器的内存的剩余空间小于预设阈值时,从除所述第一文件系统外的其他文件系统中选择第二文件系统,启动所述第二文件系统的内部写;其中,所述第二文件系统为除所述第一文件系统外的其他文件系统中脏数据量最小的文件系统。
9.如权利要求6所述的文件服务器,其特征在于,所述启动单元还用于: 当所述第一文件系统的内部写失败,则将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写。
10.如权利要求9所述的文件服务器,其特征在于,所述启动单元还用于: 将所述第一文件系统的脏数据以单个文件或单个目录为单位进行内部写,在所述第一文件系统的任意一个检查点的内部写完成后,将所述第一文件系统的与所述任意一个检查点对应的的根节点写入硬盘。
11.一种运行多个文件系统的文件服务器,其特征在于,所述文件服务器包括中央处理单元和内存,所述内存存储计算机指令,所述中央处理单元执行所述计算机指令用于执行权利要求1至5任一所述的方法。
【文档编号】G06F3/06GK104461382SQ201410696796
【公开日】2015年3月25日 申请日期:2014年11月26日 优先权日:2014年11月26日
【发明者】陈华, 陈虎 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1