数据清除方法、装置及系统的制作方法
【专利摘要】本发明提供一种数据清除方法、装置及系统,该方法包括向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为应用服务器对文件进行写操作时写入所述文件对应的数据对象中的;接收所述元数据服务器返回的查询结果;若所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中,则将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
【专利说明】数据清除方法、装置及系统
【技术领域】
[0001]本发明涉及计算机技术,尤其涉及一种数据清除方法、装置及系统。
【背景技术】
[0002]分布式文件系统具有执行远程文件存取的能力,并以透明方式对分布在网络上的文件进行管理和存取。在分布式文件系统中,文件的存储方式与本地文件系统相比存在较大差别。首先,在本地文件系统中,文件直接存储在本地节点的物理存储资源上;而在分布式文件系统中,文件的元数据和各数据分片分离,元数据和各数据分片可能存储在不同的网络节点上,相应地,对各数据分片进行读写及删除等操作是需要经过网络远程完成的。其次,在本地文件系统中,可以在本地直接对文件进行写或者修改等操作;而在分布式文件系统中,为了保证对文件进行修改写之后文件内容的正确性,需要将对各数据分片进行的修改写操作转换为写操作,使得各数据分片在被修改后存储为新的数据分片。
[0003]基于上述分布式文件系统的特点,在需要对分布在不同网络节点上的各数据分片进行删除时,需要严格控制删除顺序。由应用程序所在的应用服务器向元数据所在的元数据服务器发送删除文件的指令;元数据服务器读取该待删除文件的元数据信息,并根据元数据信息向各数据分片所在的数据服务器发送删除指令,删除该文件的各数据分片;元数据服务器在控制各数据服务器完成删除操作之后,再将该文件的元数据删除,从而完成对文件的删除。
[0004]但是,若该分布式文件系统在删除操作过程中出现网络或节点故障等问题时,元数据服务器虽然向数据服务器发送了删除文件的指令,但数据服务器由于网络故障等原因没有接收到该指令,而元数据服务器在发送删除文件的指令后将存储的元数据信息进行了删除,这就会导致部分数据分片未被成功删除,使得未被删除的数据分片成为无效文件或者垃圾文件,该部分无效文件所占用的空间无法得到释放,将会对系统资源造成浪费。
【发明内容】
[0005]本发明提供了一种数据清除方法、装置及系统,用于解决在分布式文件系统发生故障时,未被删除的数据分片成为文件,对系统资源造成浪费的问题。
[0006]本发明的第一方面是提供一种数据清除方法,包括:
[0007]向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0008]接收所述元数据服务器返回的查询结果;
[0009]若所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中,则将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
[0010]本发明的第一方面的第一种实施方式,提供一种数据清除方法,在所述向元数据服务器发送查询请求之前,所述方法还包括:[0011]周期性地对存储的所述数据对象进行扫描,以获得所述数据对象的属性信息;
[0012]读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
[0013]结合本发明的第一方面的第一种实施方式,本发明的第一方面的第二种实施方式,提供一种数据清除方法,所述属性信息中还包括所述数据对象对应的时间戳;
[0014]所述接收所述元数据服务器返回的查询结果之后,所述方法还包括:
[0015]若所述查询结果表明所述数据对象对应的文件标识存在于所述元数据服务器中,则判断所述存在于所述元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识;
[0016]若是,则对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值;
[0017]将所述两个或多个数据对象中时间戳小于所述最大值的数据对象清除。
[0018]本发明的第二方面是提供一种数据清除方法,包括:
[0019]接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0020]根据所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中;
[0021]向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
[0022]本发明第三方面是提供一种数据服务器,包括:
[0023]发送模块,用于向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0024]接收模块,用于接收所述元数据服务器返回的查询结果;
[0025]第一处理模块,用于在所述接收模块接收到的所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中时,将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
[0026]本发明第三方面的第一种实施方式,提供了一种数据服务器,所述数据服务器还包括:
[0027]扫描模块,用于在所述发送模块向所述元数据服务器发送所述查询请求之前,周期性地对存储的所述数据对象进行扫描,在获得所述数据对象的属性信息之后,读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
[0028]结合本发明第三方面的第一种实施方式,本发明第三方面的第二种实施方式,提供了一种数据服务器,所述属性信息中还包括所述数据对象对应的时间戳;
[0029]所述数据服务器还包括:
[0030]第二处理模块,用于在所述接收模块接收到的所述查询结果表明所述数据对象对应的文件标识存在于所述元数据服务器中时,判断所述存在于所述元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识;
[0031]第三处理模块,用于在所述第二处理模块判断出所述存在于所述元数据服务器中的文件标识为两个或多个数据对象对应的同一个文件标识时,对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值,并所述两个或多个数据对象中时间戳小于所述最大值的数据对象清除。
[0032]本发明的第四方面是提供一种元数据服务器,包括:
[0033]接收模块,用于接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0034]判断模块,用于根据所述接收模块接收到的所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中;
[0035]发送模块,用于向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
[0036]本发明的又一个方面是提供一种分布式文件系统,包括应用服务器、元数据服务器以及至少一个数据服务器。
[0037]本发明提供的数据清除方法、装置及系统,将文件标识分别写入存储在元数据服务器中的元数据,以及存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
【专利附图】
【附图说明】
[0038]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0039]图1为本发明提供的数据清除方法一实施例的流程图;
[0040]图2为本发明提供的数据清除方法另一实施例的流程图;
[0041]图3为本发明提供的数据清除方法再一实施例的系统结构示意图;
[0042]图4为本发明提供的数据清除方法又一实施例的系统结构示意图;
[0043]图5为本发明提供的数据清除方法又一实施例的系统结构示意图;
[0044]图6为本发明提供的数据清除方法又一实施例的系统结构示意图;
[0045]图7为本发明提供的数据服务器一实施例的结构示意图;
[0046]图8为本发明提供的数据服务器另一实施例的结构示意图;
[0047]图9为本发明提供的元数据服务器一实施例的结构示意图;
[0048]图10为本发明提供的分布式文件系统实施例的结构示意图;
[0049]图11为本发明提供的一种数据服务器32的示意图;[0050]图12为本发明提供的一种元数据服务器33的示意图。
【具体实施方式】
[0051 ] 本发明各实施例中的分布式文件系统由应用服务器、元数据服务器以及一个或多个数据服务器组成。
[0052]文件由唯一的元数据和一个或多个数据分片组成,数据分片也可以称为数据对象。其中,元数据存储在元数据服务器中,一个或多个数据对象分别存储在相应的数据服务器中。元数据服务器中可以存储分别对应于不同文件的多个元数据,每个数据服务器中所存储的多个数据对象可以属于同一个文件或者不同的文件。元数据服务器中存储有文件的各数据对象的存储位置,数据对象的存储位置即为数据对象所存储的数据服务器。因此,应用服务器通过向元数据服务器进行查询即可获知文件的元数据和相应的各数据对象所存储的位置,以便进行操作处理。
[0053]元数据中存储了文件的描述信息,数据对象中存储了该文件的相关内容。可以根据分布式文件系统的不同的设置,对数据服务器存储数据对象的规则进行设置,从而,根据该规则可以将数据对象存储在相应数据服务器中。元数据和数据对象的存储位置对于应用层而言是透明的。
[0054]应用层是应用服务器面向用户一侧的展示效果,用户无需获知文件的元数据和各数据对象是如何存储的,应用层最终呈现给用户的还是文件的整体,用户对文件进行操作时,分布式文件系统后台的各服务器会相应地对该文件中的元数据和数据对象进行相应的操作。
[0055]在应用服务器面向元数据服务器和数据服务器的一侧,应用服务器可以通过预置代理软件的方式,对元数据服务器和各数据服务器进行控制操作。以下各实施例中应用服务器对元数据服务器和数据服务器控制的方式可以通过代理软件或者其他类似的方式实现。
[0056]应用服务器可以对元数据服务器和数据服务器执行应用层的控制操作,例如创建文件或者修改文件等。作为应用层操作者的用户需要创建文件时,应用服务器向元数据服务器发送用于创建文件的指令,元数据服务器根据接收到的指令,建立并存储该文件的元数据;用户需要修改文件时,应用服务器向元数据服务器发送用于修改文件的指令,元数据服务器根据接收到的指令,向应用服务器返回相应的信息,以使应用服务器获知对那个数据服务器进行操作,进而应用服务器根据元数据服务器返回的信息,将对文件进行修改的内容写入相应的数据服务器。
[0057]以下各实施例中所述的数据对象,可以为上述数据分片。
[0058]本发明各实施例主要针对分布式文件系统在进行删除操作过程中,出现网络或节点故障的情况下,对无效数据或垃圾数据进行清除的方法和装置。
[0059]图1为本发明提供的数据清除方法一实施例的流程图,如图1所示,该方法包括:
[0060]步骤101、向元数据服务器发送查询请求。
[0061]其中,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的。[0062]本发明实施例的执行主体为数据服务器。数据服务器为了清除其上所存储的无效文件,向元数据服务器发送查询请求。由于每个数据服务器中可能存储有一个或多个数据对象,并且所存储的多个数据对象可能属于同一个文件或者不同的文件,每个数据对象都标记有其所属文件的文件标识,因此,根据数据对象对应的文件标识,即可判断出该数据对象所属的文件。在查询请求中携带数据服务器上所存储的数据对象对应的文件标识时,该查询请求中可以携带全部数据对象的文件标识,也可以携带部分数据对象的文件标识。文件标识具体可以为文件句柄。
[0063]文件是由元数据和一个或多个数据对象组成的,每个文件具有一个唯一的文件标识,利用文件标识可以对多个文件进行区分。应用服务器向元数据服务器发起创建文件的操作指令时,将该文件的文件标识写入该文件在元数据服务器中存储的元数据中。
[0064]当用户通过应用服务器的应用层对文件进行修改写操作或者写操作时,应用服务器向元数据服务器发送写操作的指令,并且在写操作的指令中可以携带有待写入该文件的数据信息,待写入文件的数据信息可以包括待写入文件的内容和相应的属性信息等。相应地,元数据服务器根据待写入该文件的数据信息,向应用服务器返回指示信息,通过指示信息告知应用服务器将待写入该文件的数据信息写入哪个数据服务器;应用服务器根据元数据服务器的指示,将待写入该文件的数据信息和该文件的文件标识携带在写操作指令中,发送给相应的数据服务器中;数据服务器在接收到应用服务器发送的写操作指令之后,根据其中的待写入该文件的数据信息生成相应的数据对象,区别于现有技术中的实现方式,在本发明实施例中应用服务器还将文件的文件标识写入数据对象的属性中。
[0065]步骤102、接收所述元数据服务器返回的查询结果。
[0066]步骤103、若所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中,则将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
[0067]元数据服务器在接收到数据服务器发送的查询请求之后,利用查询请求中的文件标识在该元数据服务器所存储的元数据中进行查询。
[0068]在现有技术中,分布式文件系统中的文件包括元数据服务器中存储的元数据和各数据服务器中所存储的数据对象,并且各数据服务器均受应用服务器的控制,在网络和设备均正常的情况下,应用服务器控制元数据服务器删除文件时,元数据服务器根据该文件的元数据找到存储在各数据服务器上的数据对象,在将相应的数据对象删除完毕之后,元数据服务器再将其上所存储的该文件的元数据删除。
[0069]由于在本发明各实施例中,元数据和各数据对象的属性中均包括所属文件的文件标识,因此,当元数据服务器将与文件对应的元数据删除之后,相应的,该元数据服务器也就不再存在与该文件标识对应的元数据。
[0070]元数据服务器根据接收到的查询请求中的文件标识,在其所存储的一个或多个元数据中进行查找,依次判断是否存在与各文件标识分别对应的元数据。如果存在与查询请求中的文件标识对应的元数据,则所获得的查询结果为该文件标识存在于元数据服务器中,该查询结果说明该文件标识所对应的文件没有被删除,相应地说明与该文件标识对应的数据对象是有效数据,并非垃圾数据;如果不存在与查询请求中的文件标识对应的元数据,则所获得的查询结果为该文件标识不存在于元数据服务器中,该查询结果说明该文件标识所对应的文件已被删除,相应地说明与该文件标识对应的数据对象是无效数据,即垃圾数据。无效数据是系统中不再使用但没有被释放掉的数据块。
[0071]元数据服务器对接收到的查询请求中的文件标识,依次完成查询之后,获得查询结果,将查询结果返回给相应的数据服务器。其中元数据服务器返回给数据服务器的查询结果的形式可以为,元数据服务器接收到的查询请求中所携带的各文件标识是否存在于元数据服务器中。
[0072]数据服务器接收元数据服务器所返回的查询结果。
[0073]若查询结果表明数据服务器在查询请求中需查询的一个或多个文件标识中,包括不存在于元数据服务器中的文件标识,则数据服务器将这部分不存在于元数据服务器中的文件标识对应的数据对象作为无效数据清除。
[0074]若查询结果表明数据服务器在查询请求中需查询的一个或多个文件标识中,包括存在于元数据服务器中的文件标识,则数据服务器将这部分存在于元数据服务器中的文件标识对应的数据对象保留。
[0075]本发明实施例提供的数据清除方法,将文件标识分别写入存储在元数据服务器中的元数据,以及存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
[0076]图2为本发明提供的数据清除方法另一实施例的流程图,如图2所示,在上述实施例的基础上,在执行步骤101之前,该方法还包括:
[0077]步骤104、周期性地对存储的所述数据对象进行扫描,以获得所述数据对象的属性
信息;
[0078]步骤105、读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
[0079]数据服务器为了获得各数据对象的文件标识,可以周期性地对存储的所述一个或多个数据对象进行扫描,进而读取各数据对象分别对应的属性信息,从中获取到属性信息中包括的该数据对象对应的文件标识。
[0080]从而,数据服务器在获得了各数据对象分别对应的文件标识之后,可以将数据对象所对应的文件标识携带在查询请求中,向元数据服务器发送查询请求。
[0081]本发明实施例提供的数据清除方法,通过周期性地对数据对象进行扫描,获取数据对象的文件标识,进而利用文件标识向元数据服务器发起查询操作,以确认数据对象是否为数据,可以起到定期清除文件的作用,有效地释放文件所占用的系统资源,提高系统资源的利用率。
[0082]图3为本发明提供的数据清除方法再一实施例的流程图。在上述实施例的基础上,所述属性信息中还包括所述一个或多个数据对象分别对应的时间戳,相应地,如图3所示,执行步骤102之后,该方法还可以包括:
[0083]步骤106、若查询结果表明数据对象对应的文件标识存在于元数据服务器中,则进一步地判断存在于元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识。若是,则执行步骤107。[0084]步骤107、对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值,将所述两个或多个数据对象中时间戳小于所述最大值的数据对
象清除。
[0085]若数据服务器中数据对象的文件标识存在于元数据服务器中,则可以进一步地判断这部分存在于元数据服务器中的文件标识是否与两个或多个数据对象存在对应关系。
[0086]也就是说,在判断出数据对象的文件标识存在于元数据服务器的情况下,如果有两个或多个数据对象具有相同的文件标识,即说明该两个或多个数据对象属于同一文件,即该文件与该两个或多个数据对象存在对应关系,则可以进一步地判断该两个或多个数据对象中的数据。
[0087]若数据服务器的数据对象的属性信息中还包括时间戳,则相应地比较具有相同文件标识的两个或多个数据对象的时间戳。时间戳也可以称为版本号,代表了数据对象被创建的时间点,通过比较时间戳的大小,可以获知数据对象被创建的时间顺序。
[0088]分别对具有相同文件标识的数据对象的时间戳的大小进行比较,获得具有相同文件标识的数据对象的时间戳的最大值,时间戳越小,则说明该数据对象的版本越低,也就是说被创建的时间越早;时间戳越大,则说明该数据对象的版本越高,也就是说被创建的时间越晚,属于最新版本的数据对象。
[0089]在获得具有相同文件标识的数据对象的时间戳的最大值时,也就是获知了创建时间最晚,版本最新的数据对象。
[0090]相应地,一种可选的实施方式为,根据系统预先的设置,将具有相同文件标识的两个或多个数据对象中时间戳小于所述最大值的数据对象清除。其中,系统可以预先设置规贝U,以具体控制是否保留全部或部分版本较低的数据对象,或者仅保留最新版本的数据对
任雄
[0091]进一步地,一种可选的实施方式为,所述时间戳为在接收到所述应用服务器发送的写操作指令后,对所述文件进行写操作时,写入所述文件对应的数据对象中的。
[0092]当应用服务器对文件发起修改写操作的指令或者写操作的指令时,根据元数据服务器的指示获知待写入该文件的数据信息需要写入的数据服务器,进而元数据服务器不仅将待写入该文件的数据信息和该文件的文件标识发送给相应的数据服务器,还将当前的时间信息发送给该数据服务器,从而该数据服务器根据待写入该文件的数据信息生成的数据对象,将该文件标识写入该数据对象的属性信息,并将该时间信息作为时间戳写入该数据对象的属性信息中。
[0093]本发明实施例提供的数据清除方法,在判断出文件标识存在于元数据服务器中之后,通过进一步地比较具有相同文件标识的数据对象的时间戳的大小,可以获知数据对象中的时间戳较小版本较低的历史数据,通过对历史数据的删除,有效地释放存储空间,提高系统资源的利用效率;通过对数据对象在横向上利用文件标识确认是否为无效数据,在纵向上利用时间戳确认是否为无效数据,有效地提高了无效数据进行清除的性能。
[0094]图4为本发明提供的数据清除方法另一实施例的流程图,如图4所示,该方法包括:
[0095]步骤201、接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识。[0096]其中,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的。
[0097]步骤202、根据所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中。
[0098]步骤203、向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
[0099]本发明实施例的执行主体为元数据服务器。元数据服务器进行数据清除的方法可以参见上述实施例中的步骤101至步骤107中的相关步骤,此处不再赘述。
[0100]本发明实施例提供的数据清除方法,将文件标识分别写入存储在元数据服务器中的元数据,以及存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,在保证对无效数据进行删除的性能的同时,有效地提高了系统资源的利用率。
[0101]图5为本发明提供的数据清除方法再一实施例的系统结构示意图,图5所示的是分布式文件系统中的一种最基本的文件布局,本发明各实施例适用的文件布局并不仅限于此,可适用于分布式文件系统中的任何文件布局方式。
[0102]该分布式文件系统,也称为对象存储系统,一个文件由不同的对象组成,元数据和数据分片分离,即元数据和数据分片存储在不同的节点上,对元数据和数据分片的访问,不会互斥,可以并发。
[0103]将文件的句柄记录到文件所有的对象的属性中,例如文件句柄为5aa5,可以双向地将文件和对象绑定在一起,即可以通过文件找到相关的对象,同时也可以通过对象找到相应的文件。当双向绑定被破坏,就可以相互判定为垃圾数据,从而达到回收垃圾数据的目的。
[0104]对分布式文件系统具体的操作流程为:
[0105]应用层通过应用服务器向元数据服务器下发文件创建的操作指令;元数据服务器成功创建文件;应用服务器需要对所创建的文件进行修改时,向元数据服务器发送信息,以根据元数据服务器返回的指示信息获知其需要将对文件进行修改的数据信息发送给哪个数据服务器;应用层通过应用服务器向数据服务器中的数据分片写入内容时,将文件句柄作为唯一标识写入数据分片的属性中。
[0106]当应用层通过应用服务器向元数据服务器发起删除文件的操作时,元数据服务器读取该文件的元数据信息,该元数据信息中包括了该文件的各数据分片所存储的数据服务器的信息;元数据服务器根据元数据信息,控制各数据服务器删除该文件对应的数据分片;元数据服务器完成对各数据服务器中数据分片的删除之后,再删除该文件的元数据;元数据服务器在完成对元数据的删除之后,通过应用服务器向应用层返回删除成功的信息。
[0107]若在上述删除过程中,系统出现故障,例如整机掉电等情况,导致待删除的数据分片未删除成功时,则在相应的数据服务器上产生了垃圾空间。
[0108]数据服务器定时扫描本存储节点的所有数据分片,对于每一个数据分片都读取其文件句柄,利用读取到的文件句柄向元数据服务器确认该文件句柄对应的文件是否存在;如果该文件存在,则不需要进行处理,如果该文件不存在,则与该文件句柄对应的数据分片为垃圾数据。将判断为垃圾数据的数据分片删除,回收该数据分片所占用的存储空间,从而完成了对分布式文件系统中垃圾数据的删除。
[0109]图6为本发明提供的数据清除方法又一实施例的系统结构示意图,图6所示的是在图5所示的文件布局基础上的多数据版本的系统。
[0110]图6中所示的文件固定范围,是数据服务器为数据分片分配的一定的存储空间,若同一文件固定范围内同时有两份数据,则这两份数据对应的文件在不同时刻的内容。
[0111]对于每一个数据分片,将文件的文件句柄以及当前的时间戳(Time Stamp, TS)与数据内容一起写入到数据分片中,每一个数据分片在横向上利用文件句柄进行唯一标识,在纵向上利用递增的版本号TS进行唯一的标识,利用横向和纵向的标识有助于确认该数据分片是否为有效数据,从而防止了垃圾空间的产生。
[0112]对分布式文件系统具体的操作流程为:
[0113]应用层通过应用服务器向元数据服务器下发文件创建的操作指令;元数据服务器成功创建文件;应用服务器需要对所创建的文件进行修改时,向元数据服务器发送信息,以根据元数据服务器返回的指示信息获知其需要将对文件进行修改的数据信息发送给哪个数据服务器;应用层通过应用服务器向数据服务器中的数据分片写入内容时,将文件句柄和时间戳TS-A —起发送给数据服务器。
[0114]数据服务器在接收到元数据服务器发送的写操作指令时,将文件句柄、时间戳TS-A和文件数据一起写入一个数据分片中,存入数据分片管理树(B+树)。
[0115]当应用服务器向数据服务器中的数据分片写入内容时,将文件句柄和时间戳TS-B一起发送给数据服务器。
[0116]数据服务器在接收到应用服务器发送的写操作指令时,将文件句柄、时间戳TS-B和文件数据一起写入一个数据分片中,存入数据分片管理树,时间戳为TS-A的数据分片与时间戳为TS-B的数据分片共有一个父节点。
[0117]当应用层通过应用服务器向元数据服务器发起删除文件的操作时,元数据服务器读取该文件的元数据信息,该元数据信息中包括了该文件的各数据分片所存储的数据服务器的信息;元数据服务器根据元数据信息,控制各数据服务器删除该文件对应的数据分片;元数据服务器完成对各数据服务器中数据分片的删除之后,再删除该文件的元数据;元数据服务器在完成对元数据的删除之后,通过应用服务器向应用层返回删除成功的信息。
[0118]若在上述删除过程中,系统出现故障,例如整机掉电等情况,导致待删除的数据分片未删除成功时,则在相应的数据服务器上产生了垃圾空间。
[0119]数据服务器定时扫描本存储节点的所有数据分片,对于每一个数据分片都读取其文件句柄和时间戳TS-A ;利用读取到的文件句柄向元数据服务器确认该文件句柄对应的文件是否存在;如果该文件不存在,则与该文件句柄对应的数据分片为垃圾数据,将判断为垃圾数据的数据分片删除;如果该文件存在,则不需要进行处理,则通过文件句柄寻找与该文件句柄对应的数据分片,在找到TS-B的数据分片之后,将TS-A与TS-B比较,若发现TS-A小于TS-B,则TS-A对应的数据分片是旧版本的数据,该旧版本的数据分片可视为垃圾数据,删除时间戳为TS-A的数据分片,回收该数据分片所占用的存储空间,从而完成了对分布式文件系统中垃圾数据的删除。
[0120]图7为本发明提供的数据服务器一实施例的结构示意图,如图7所示,该数据服务器包括发送模块11、接收模块12和第一处理模块13。
[0121]其中,发送模块11,用于向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0122]接收模块12,用于接收所述元数据服务器返回的查询结果;
[0123]第一处理模块13,用于在所述接收模块12接收到的所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中时,将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
[0124]图8为本发明提供的数据服务器另一实施例的结构示意图,如图8所示,该数据服务器还包括扫描模块14。
[0125]其中,扫描模块14,用于在所述发送模块11向所述元数据服务器发送所述查询请求之前,周期性地对存储的所述数据对象进行扫描,在获得所述数据对象的属性信息之后,读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
[0126]进一步地,一种可选的实施方式为,所述属性信息中还包括所述数据对象对应的时间戳;相应地,所述数据服务器还包括,第二处理模块15和第三处理模块16。
[0127]其中,第二处理模块15,用于在所述接收模块12接收到的所述查询结果表明所述数据对象对应的文件标识存在于所述元数据服务器中时,判断所述存在于所述元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识;
[0128]第三处理模块16,用于在所述第二处理模块15判断出所述存在于所述元数据服务器中的文件标识为两个或多个数据对象对应的同一个文件标识时,对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值,并将所述两个或多个数据对象中时间戳小于所述最大值的数据对象清除。
[0129]进一步地,在上述各实施例的基础上,所述时间戳为在接收到所述应用服务器发送的写操作指令后,对所述文件进行写操作时,写入所述文件对应的数据对象中的。
[0130]具体的,本发明实施例中数据服务器进行数据清除的方法,可以参见上述对应的方法实施例中的操作步骤,此处不再赘述。
[0131]本发明实施例提供的数据服务器,将文件标识写入存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
[0132]图9为本发明提供的元数据服务器一实施例的结构示意图,如图9所示,该元数据服务器包括,接收模块21、判断模块22和发送模块23。
[0133]其中,接收模块21,用于接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0134]判断模块22,用于根据所述接收模块21接收到的所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中;
[0135]发送模块23,用于向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
[0136]具体的,本发明实施例中元数据服务器进行数据清除的方法,可以参见上述对应的方法实施例中的操作步骤,此处不再赘述。
[0137]本发明实施例提供的元数据服务器,将文件标识分别写入存储在元数据服务器中的元数据,以及存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
[0138]图10为本发明提供的分布式文件系统实施例的结构示意图,如图10所示,该分布式文件系统包括应用服务器31、至少一个数据服务器32以及元数据服务器33 ;所述应用服务器31、所述数据服务器32和所述元数据服务器33之间通信连接。
[0139]具体的,本发明实施例中分布式文件系统进行数据清除的方法,可以参见上述对应的方法实施例中的操作步骤,此处不再赘述。
[0140]本发明实施例提供的分布式文件系统,将文件标识分别写入存储在元数据服务器中的元数据,以及存储在数据服务器中的数据对象,利用数据对象对应的文件标识,在元数据服务器中进行查询,若元数据服务器中与该文件标识对应的元数据已被删除,则该数据服务器中与该文件标识对应的数据对象即为无效数据,进而将成为无效数据的数据对象清除,从而对无效数据所占用的空间进行释放,提高了对无效数据进行清除的性能,有效地提高了系统资源的利用率。
[0141]图11为本发明提供的一种数据服务器32的示意图,如图11所示,数据服务器32可能是包含计算能力的主机服务器,或者是个人计算机PC,或者是可携带的便携式计算机或终端等等,本发明具体实施例并不对数据服务器的具体实现做限定。数据服务器32包括:
[0142]处理器(processor)321,通信接口(Communications Interface) 322,存储器(memory) 323,总线 324。
[0143]处理器321、通信接口 322、存储器323通过总线324完成相互间的通信。
[0144]通信接口 322用于与网元通信,比如元数据服务器33、应用服务器31等。
[0145]处理器321,用于执行程序3231。
[0146]具体地,程序3231可以包括程序代码,所述程序代码包括计算机操作指令。
[0147]处理器321可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0148]存储器323用于存放程序3231。存储器323可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序3231具体可以包括:[0149]发送模块11,用于向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0150]接收模块12,用于接收所述元数据服务器返回的查询结果;
[0151]第一处理模块13,用于在所述接收模块12接收到的所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中时,将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
[0152]程序3231中各单元的具体实现参见图7-图8所示实施例中的相应单元,在此不赘述。
[0153]图12为本发明提供的一种元数据服务器33的示意图,如图12所示,元数据服务器33可能是包含计算能力的主机服务器,或者是个人计算机PC,或者是可携带的便携式计算机或终端等等,本发明具体实施例并不对数据服务器的具体实现做限定。数据服务器33包括:
[0154]处理器(processor)331,通信接口(Communications Interface) 332,存储器(memory) 333,总线 334。
[0155]处理器331、通信接口 332、存储器333通过总线334完成相互间的通信。
[0156]通信接口 332用于与网元通信,比如数据服务器32、应用服务器31等。
[0157]处理器331,用于执行程序3331。
[0158]具体地,程序3331可以包括程序代码,所述程序代码包括计算机操作指令。
[0159]处理器331可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0160]存储器333用于存放程序3331。存储器333可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序3331具体可以包括:
[0161]接收模块21,用于接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的;
[0162]判断模块22,用于根据所述接收模块21接收到的所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中;
[0163]发送模块23,用于向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
[0164]程序3331中各单元的具体实现参见图9所示实施例中的相应单元,在此不赘述。
[0165]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0166]在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0167]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0168]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0169]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM, Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0170]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种数据清除方法,其特征在于,包括: 向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的; 接收所述元数据服务器返回的查询结果; 若所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中,则将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
2.根据权利要求1所述的数据清除方法,其特征在于,在所述向元数据服务器发送查询请求之前,所述方法还包括: 周期性地对存储的所述数据对象进行扫描,以获得所述数据对象的属性信息; 读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
3.根据权利要求2所述的数据清除方法,其特征在于,所述属性信息中还包括所述数据对象对应的时间戳; 所述接收所述元数据服务器返回的查询结果之后,所述方法还包括: 若所述查询结果表明所述数据对象对应的文件标识存在于所述元数据服务器中,则判断所述存在于所述元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识; 若是,则对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值;` 将所述两个或多个数据对象中时间戳小于所述最大值的数据对象清除。
4.根据权利要求3所述的数据清除方法,其特征在于,所述时间戳为在接收到所述应用服务器发送的写操作指令后,对所述文件进行写操作时,写入所述文件对应的数据对象中的。
5.一种数据清除方法,其特征在于,包括: 接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的; 根据所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中; 向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
6.一种数据服务器,其特征在于,包括: 发送模块,用于向元数据服务器发送查询请求,所述查询请求中携带有数据对象对应的文件标识,所述文件标识为在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的; 接收模块,用于接收所述元数据服务器返回的查询结果; 第一处理模块,用于在所述接收模块接收到的所述查询结果表明所述数据对象对应的文件标识不存在于所述元数据服务器中时,将所述不存在于所述元数据服务器中的文件标识对应的数据对象清除。
7.根据权利要求6所述的数据服务器,其特征在于,所述数据服务器还包括: 扫描模块,用于在所述发送模块向所述元数据服务器发送所述查询请求之前,周期性地对存储的所述数据对象进行扫描,在获得所述数据对象的属性信息之后,读取所述数据对象的属性信息,所述属性信息中包括所述数据对象对应的文件标识。
8.根据权利要求7所述的数据服务器,其特征在于,所述属性信息中还包括所述数据对象对应的时间戳; 所述数据服务器还包括: 第二处理模块,用于在所述接收模块接收到的所述查询结果表明所述数据对象对应的文件标识存在于所述元数据服务器中时,判断所述存在于所述元数据服务器中的文件标识是否为两个或多个数据对象对应的同一个文件标识; 第三处理模块,用于在所述第二处理模块判断出所述存在于所述元数据服务器中的文件标识为两个或多个数据对象对应的同一个文件标识时,对所述两个或多个数据对象的时间戳进行比较,获得所述两个或多个数据对象中时间戳的最大值,并所述两个或多个数据对象中时间戳小于所述最大值的数据对象清除。
9.根据权利要 求8所述的数据服务器,其特征在于,所述时间戳为在接收到所述应用服务器发送的写操作指令后,对所述文件进行写操作时,写入所述文件对应的数据对象中的。
10.一种元数据服务器,其特征在于,包括: 接收模块,用于接收数据服务器发送的查询请求,所述查询请求中携带有一个或多个数据对象分别对应的文件标识,所述文件标识为所述数据服务器在接收到应用服务器发送的写操作指令后,对文件进行写操作时,写入所述文件对应的数据对象中的; 判断模块,用于根据所述接收模块接收到的所述查询请求,判断是否存在与各所述文件标识分别对应的文件的元数据,若是,则查询结果表明文件标识存在于元数据服务器中,若否,则所述查询结果表明文件标识不存在于所述元数据服务器中; 发送模块,用于向所述数据服务器返回查询结果,以供所述数据服务器根据所述查询结果,将不存在于所述元数据服务器中的文件标识所对应的数据对象清除。
11.一种分布式文件系统,其特征在于,包括应用服务器、至少一个如权利要求6-9中任一所述的数据服务器以及如权利要求10所述的元数据服务器;所述应用服务器、所述数据服务器和所述元数据服务器之间通信连接。
【文档编号】G06F17/30GK103678337SQ201210327249
【公开日】2014年3月26日 申请日期:2012年9月6日 优先权日:2012年9月6日
【发明者】陈宝罗 申请人:华为技术有限公司