文件截断方法和装置制造方法

文档序号:6638364阅读:199来源:国知局
文件截断方法和装置制造方法
【专利摘要】本发明提供一种文件截断方法和装置。方法包括:接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间;根据所述标识确定所述待截断文件;对所述待截断文件加锁;创建所述待截断文件对应的位图;所述位图创建之后,对所述待截断文件解锁;在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放。本发明的文件截断方法和装置,能够快速对用户返回截断成功,解决了现有文件截断过程太慢影响其它操作的问题。
【专利说明】文件截断方法和装置

【技术领域】
[0001 ] 本发明实施例涉及计算机技术,尤其涉及一种文件截断方法和装置。

【背景技术】
[0002]截断是指删除文件中的数据,但不删除文件的操作。文件系统存在很多截断的操作,例如对在编辑文档时,插入字符的过程就需要截断操作。图1为一个文件的数据块结构示意图,如图1所示,文件系统的数据块一般按树状结构组织,每个椭圆表示一个数据块,该文件包括8个数据块(编号为0-7)和6个间接块,其中8个数据块也称为叶子块。截断操作时需要把涉及到的数据块都释放掉,例如,原文件的大小为100MB,若截断到IMBJlJIMB至100MB之间的数据块都会被释放;若截断到0ΜΒ,则原文件中所有的数据块都会被释放掉。当文件系统收到一个要求把图1所示的文件截断到O的指令后,先对文件加锁,使得在截断期间该文件不被更改,即用户在该期间不能对该文件进行读写操作;再释放所有的数据块以及间接块,具体操作为遍历该文件的组织结构,查找要释放的块的地址,包括叶子块与间接块,并释放这些叶子块与间接块,将其挂回空闲队列;然后对该文件解锁,并向用户返回截断成功的消息。
[0003]可以看出,现有技术的截断方法,在截断期间文件都被加锁,而加锁会导致其它的操作无法对该文件加锁而挂住,导致该文件不能被访问,不便于用户操作,也会影响业务的成功率,尤其是当文件较大时,例如文件大小为几十个GB,则块的释放会很慢,而这期间其他操作又无法对该文件进行访问,对于网络存储技术(Network Storage Technologies,简称:NAS)场景有可能导致客户端操作超时,从而造成业务中断。


【发明内容】

[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]在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图用于记录所述数据块的标识,以及记录所述数据块的空间已释放。
[0040]在第二方面的第一种可能的实现方式中,所述接收模块,还用于:在所述释放所述数据块的空间之后,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0041]所述处理模块还用于:
[0042]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0043]将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0044]在第二方面的第二种可能的实现方式中,所述接收模块,还用于:
[0045]在所述释放所述数据块的空间之前,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0046]所述处理模块还用于:
[0047]根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0048]在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0049]根据第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述处理模块,还用于:
[0050]将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同;
[0051]所述将所述待写入数据写入所述待写入数据的地址对应的存储空间中,包括:从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
[0052]根据第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述接收模块,还用于:
[0053]接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0054]所述处理模块还用于:
[0055]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0056]从所述待写入数据的地址对应的存储空间中获得所述待写入数据;
[0057]还包括发送模块,用于将所述待写入数据发送给所述客户端。
[0058]根据第二方面的第二种或第三种可能的实现方式,在第五种可能的实现方式中,所述接收模块,还用于:
[0059]接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0060]所述处理模块还用于:根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0061]所述发送模块还用于:向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
[0062]本发明实施例提供的文件截断方法和装置,通过所述位图创建之后,对所述待截断文件解锁,在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,然后在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息在记录截断过程的进度之后就向用户返回截断成功的消息,并将截断任务转入后台运行,由于对待截断文件解锁的步骤在释放所述数据块的空间的步骤之前,使得在实际释放数据块的空间的过程中能够支持新的对文件的访问操作,从而能够快速对用户返回截断成功,提高了便利性,并解决了现有文件系统截断过程太慢影响其它操作的问题,并提高了便利性。

【专利附图】

【附图说明】
[0063]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0064]图1为一个文件的数据块结构示意图;
[0065]图2为本发明文件截断方法实施例一的流程图;
[0066]图3为基于本发明的文件截断方法,在释放所述数据块的空间已完成时写入数据的方法实施例的流程图;
[0067]图4为基于本发明的文件截断方法,在释放所述数据块的空间未完成时写入数据的方法实施例的流程图;
[0068]图5为图4所示实施例中示例性的4号块的空间分布示意图;
[0069]图6为基于本发明的文件截断方法,在释放所述数据块的空间已完成时读数据的方法实施例的流程图;
[0070]图7为基于本发明的文件截断方法,在释放所述数据块的空间未完成时读数据的方法实施例的流程图;
[0071]图8为本发明文件截断装置实施例一的结构示意图;
[0072]图9为本发明件截断装置实施例二的结构示意图;
[0073]图10为本发明件截断装置实施例三的结构示意图。

【具体实施方式】
[0074]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0075]图2为本发明文件截断方法实施例一的流程图,如图2所示,本实施例的方法可以包括:
[0076]步骤201、接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间。
[0077]步骤202、根据所述标识确定所述待截断文件。
[0078]步骤203、对所述待截断文件加锁。
[0079]步骤204、创建所述待截断文件对应的位图。
[0080]步骤205、所述位图创建之后,对所述待截断文件解锁。
[0081]现有技术中需要将待截断的数据块全部释放之后才将待截断文件解锁的方案,而在本实施例中,步骤205在创建位图之后就对所述待截断文件解锁,使得其他操作能够对该文件进行操作。
[0082]步骤206、在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放。
[0083]其中,步骤203和步骤204并没有先后顺序,该两个步骤也可以同时进行。步骤204中的位图用于记录截断过程的进度。
[0084]可选地,步骤204的位图创建之后,还可以将所述位图记录在保电内存中,即存储在非易失性内存中。或者,还可以进行镜像等备份处理,以保证所述位图不被丢失。
[0085]并且,该位图任务需要持久化,并根据数据块释放的进度进行更新。
[0086]本实施例的方法,文件系统在收到文件截断指令后,只要创建或初始化所述待截断文件对应的位图之后就对所述待截断文件解锁,并且在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间。这里,释放所述数据块的空间的操作可以由后台执行,对客户端不可见。在实际执行释放数据块的空间的操作时,在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息,例如每释放掉一个数据块的空间就可以在位图里标记为O。
[0087]本实施例的方法,通过在所述位图创建之后,对所述待截断文件解锁,在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,然后在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息,由于对待截断文件解锁的步骤在释放所述数据块的空间的步骤之前,使得在实际释放数据块的空间的过程中能够支持新的对文件的访问操作,从而能够解决现有文件系统截断过程太慢影响其它操作的问题,并提高了便利性。
[0088]由于在返回截断成功的消息时,实际上具体的释放数据块的操作并没有完成,如果在后台进行释放时,又收到访问数据的指令,这时存在两种情况,第一种情况下,虽然整个截断过程未完成,但是待访问的数据块已经释放完成,这种情况只要确认该数据块已经释放完成,对数据的访问可以与一般的数据访问相同,不需要其他的额外处理;第二种情况下,待访问的数据块还没有被释放,则优先释放该待访问的数据块,并且,写入数据的操作与读数据的操作也不相同,下面分别对不同情况下的数据访问过程进行描述。
[0089]图3为基于本发明的文件截断方法,在释放所述数据块的空间已完成时写入数据的方法实施例的流程图,如图3所示,本实施例的方法可以包括:
[0090]步骤301、接收客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置。
[0091]通常数据块的空间较大,而待写入数据所需的空间仅占数据块的空间的一部分,因此,待写入数据的地址包括通常需要包括所述数据块的标识和所述待写入数据在所述数据块中的位置。
[0092]步骤302、根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放。
[0093]步骤303、将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0094]本实施例的数据写入方法,在写入数据之前先查询位图,确定所述数据块的空间已被释放,然后再将所述待写入数据写入所述待写入数据的地址对应的存储空间中,即使在整个文件截断过程未结束时,也能够保证写入过程的正常进行。
[0095]图4为基于本发明的文件截断方法,在释放所述数据块的空间未完成时写入数据的方法实施例的流程图,如图4所示,本实施例的方法可以包括:
[0096]步骤401、接收客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置。
[0097]步骤402、根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放。
[0098]接下来,可以在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0099]可选地,在具体实现时,在执行释放所述数据块的空间,将所述待写入数据写入所述待写入数据的地址对应的存储空间中的步骤之前,还可以先执行如下的可选步骤403:
[0100]步骤403、将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同。
[0101]这时,在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中的步骤具体可以为:
[0102]步骤404、从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
[0103]具体地,将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同,是指,将所述待写入的数据块采用全零页面表示,与待写入的数据进行组合,组合的结果可以是所述缓存中产生三个页面,分别为:所述数据块的首地址至所述待写入数据在所述数据块中的位置之间的空间所对应的全零页面,待写入数据对应的页面和所述待写入数据在所述数据块中的位置至所述数据块的尾地址之间空间对应的全零页面。
[0104]步骤404中,当缓存数据写入磁盘时,全零页面会转换成截断操作。
[0105]下面以一个具体的实施例说明待写入的数据块的空间还未释放情况的具体操作。设文件系统组织结构如图1所示,数据块为O?7,每个块的大小为1GB,截断指示为要求截断为0,初始的截断过程进度,即截断位图为11111111,一般的截断任务为从后往前进行,因此,当截断到5时,截断位图为11111000,如果这时收到指令:在4号块中写入大小为4KB的数据,其4KB的数据起始于4号块中首地址之后128KB的位置。这时写入操作可以如图4的方法进行,其中,步骤402具体为检测位图,根据位图确定4号块没有被释放。这时可以优先释放该4号块,步骤403的写入缓存的操作,其具体包括:
[0106]将待写入的4KB数据和全零数据进行组合。缓存将产生三个页面:待写入数据之前空间对应的全零页面,待写入的4KB数据对应的页面和待写入数据之后空间对应的全零页面。
[0107]设该4号块的大小为1GB,例如,该IGB的区域表示的位置是从文件的50GB至51GB之间的区域,写入的4KB的数据位于50GB+128KB的位置,这时,缓存产生的三个页面分别为:[50GB,128KB]、[ (50GB+128KB),4KB]、[ (50GB+128KB+4K),(1GB-128KB-4KB)],其中,中括号中的第一项表示区域的起始位置,第二项(逗号之后的项)表示该区域的长度。
[0108]该4号块的空间分布如图5所示,图5为图4所示实施例中示例性的4号块的空间分布示意图。其中,阴影部分为待写入的4KB数据,阴影部分前后两个空白部分为两个全零页面,阴影部分的起始位置为所述待写入数据的地址包括的述待写入数据在所述数据块中的位置,本实施例中为50GB+128KB,即阴影部分左侧的全零页面的长度为128KB。
[0109]全零页面是一种特殊的页面,用于表示一种释放动作,当缓存数据存入磁盘时,会将所述全零页面转换成截断操作,并把所述数据块和与所述数据块对应的间接块对应的空间全部释放掉。在缓存中数据存入磁盘时,会针对全零页面作特殊的处理,如[50GB,128KB]这个全零页面表示要把文件的从50GB起始往后128KB的区域分配的空间释放掉;[(50GB+128KB+4K),(1GB-128KB-4KB)]表示把文件 50GB+128KB+4K 位置起 51GB-128KB-4KB长度之内的区域空间释放掉;[(50GB+128KB),4KB]区域是用户实际待写入数据的区域。这样,最终存入磁盘的就是4KB的待写入数据。
[0110]本实施例的方法,可以应用于待访问的数据块还没有被释放,而有收到写数据指令的情况,通过在写入数据之前优先释放该数据块,然后进行写入的操作完成写入任务,从而保证了写入操作的正常进行。
[0111]图6为基于本发明的文件截断方法,在释放所述数据块的空间已完成时读数据的方法实施例的流程图,如图6所示,本实施例的方法可以包括:
[0112]步骤601、接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址。
[0113]其中,本实施例的场景为对于某个文件的截断的操作转入后台执行时的接收到读数据的指令,此时该文件的数据块空间释放并未完成。步骤601的读数据指令是指前述的图3或图4所对应的实施例中写入的数据,因此,读数据指令中包括的地址对应于前述实施例中的待写入数据的地址。
[0114]步骤602、根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放。
[0115]步骤603、从所述待写入数据的地址对应的存储空间中获得所述待写入数据。
[0116]步骤604、将所述待写入数据发送给所述客户端。
[0117]相比于现有技术的读数据方法,本实施例的读数据方法在获取读数据指令中要求的数据之前,增加了查看位图,确认所述数据块的空间是否已被释放的步骤,从而保证了即使在整个文件的截断未完成时,也能够执行读数据的操作。
[0118]图7为基于本发明的文件截断方法,在释放所述数据块的空间未完成时读数据的方法实施例的流程图,如图7所示,本实施例的方法可以包括:
[0119]步骤701、接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址。
[0120]其中,本实施例的场景为对于某个文件的截断的操作转入后台执行时的接收到读数据的指令,此时该文件的数据块空间释放并未完成。步骤701的读数据指令是指前述的图3或图4所对应的实施例中写入的数据,因此,读数据指令中包括的地址对应于前述实施例中的待写入数据的地址。
[0121]步骤702、根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放。
[0122]步骤703、向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
[0123]相比于现有技术的读数据方法,本实施例的读数据方法在获取读数据指令中要求的数据之前,增加了查看位图,确认所述数据块的空间是否已被释放的步骤,本实施例中,由于数据块的空间未被释放,因此向客户端返回无数据的指示。
[0124]结合上述各个实施例,通过把文件截断操作转变为后台执行的释放数据块的空间的任务,并通过位图记录释放数据块的空间的过程的进度,能够快速对所述待截断文件解锁,并向所述客户端发送所述指令的响应消息,从用户感知的角度,加快了大文件的截断操作,能够更快的响应数据块的应用;对于NAS场景,对于数据量较大的文件的截断命令不容易超时,从而提高了业务的成功率;同时,采用位图记录,例如位图日志(log)的方式,保证数据块空间释放、写入数据和读数据这些操作之间的独立性,不会因为数据块空间释放过程影响读数据和写入数据的执行。
[0125]图8为本发明文件截断装置实施例一的结构示意图,本实施例的装置可以为设置在计算机、服务器、智能手机或者其他电子产品上,如图8所示,本实施例的文件截断装置800可以包括:接收模块801和处理模块802,其中,
[0126]接收模块801,可以用于接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间;
[0127]处理模块802,可以用于:
[0128]根据所述标识确定所述待截断文件;
[0129]对所述待截断文件加锁;
[0130]创建所述待截断文件对应的位图;
[0131]所述位图创建之后,对所述待截断文件解锁;
[0132]在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图用于记录所述数据块的标识,以及记录所述数据块的空间已释放。
[0133]可选地,在一个场景中,所述接收模块801,还用于在所述释放所述数据块的空间之后,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0134]所述处理模块802还用于:
[0135]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0136]将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0137]可选地,在另一场景中,所述接收模块801,还可以用于在所述释放所述数据块的空间之前,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0138]所述处理模块802,还用于:
[0139]根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0140]在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0141]可选地,所述处理模块802还可以用于:
[0142]将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同;
[0143]所述将所述待写入数据写入所述待写入数据的地址对应的存储空间中,包括:从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
[0144]本实施例的装置,可以用于执行图2?4所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
[0145]本实施例的装置,通过所述位图创建之后,对所述待截断文件解锁,在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,然后在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息在记录截断过程的进度之后就向用户返回截断成功的消息,并将截断任务转入后台运行,由于对待截断文件解锁的步骤在释放所述数据块的空间的步骤之前,使得在实际释放数据块的空间的过程中能够支持新的对文件的访问操作,从而能够快速对用户返回截断成功,提高了便利性,并解决了现有文件系统截断过程太慢影响其它操作的问题,并提高了便利性。并且,在实际释放数据块的空间的过程中,写数据的操作能够顺利进行。
[0146]图9为本发明件截断装置实施例二的结构示意图,本实施例的所述文件截断装置900,在图8所示实施例的基础上,还可以包括发送模块803。
[0147]在一个场景中,所述接收模块801,还可以用于接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0148]所述处理模块802还可以用于:
[0149]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0150]从所述待写入数据的地址对应的存储空间中获得所述待写入数据;
[0151]所述发送模块803可以用于将所述待写入数据发送给所述客户端。
[0152]可选地,在另一场景中,所述接收模块801,还用于:
[0153]接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0154]所述处理模块802还用于:根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0155]所述发送模块803还用于:向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
[0156]本实施例的装置,可以用于执行图6、7所示方法实施例的技术方案,其实现原理类似,此处不再赘述。
[0157]本实施例的装置,通过所述位图创建之后,对所述待截断文件解锁,在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,然后在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息在记录截断过程的进度之后就向用户返回截断成功的消息,并将截断任务转入后台运行,由于对待截断文件解锁的步骤在释放所述数据块的空间的步骤之前,使得在实际释放数据块的空间的过程中能够支持新的对文件的访问操作,从而能够快速对用户返回截断成功,提高了便利性,并解决了现有文件系统截断过程太慢影响其它操作的问题,并提高了便利性。并且,在实际释放数据块的空间的过程中,读数据的操作能够顺利进行。
[0158]图10为本发明文件截断装置实施例三的结构示意图,本实施例的文件截断装置可以为计算机、服务器、智能手机或者其他电子产品,可以用于执行图2?4、6?7所示任一方法实施例的方法,如图10所示,本实施例的文件截断装置1000可以包括:接口电路1001和处理器1002,图中还示出了存储器1003和总线1004,该处理器1002、接口电路1001和存储器1003通过总线1004连接并完成相互间的通信。
[0159]该总线1004可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component, PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。该总线 1004 可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0160]存储器1003用于存储可执行程序代码,该程序代码包括计算机操作指令。存储器1003可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0161]处理器1002可以是一个中央处理器(Central Processing Unit, CPU),或者是特定集成电路(Applicat1n Specific Integrated Circuit, ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
[0162]其中,接口电路1001,可以用于接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间;
[0163]处理器1002,可以用于:
[0164]根据所述标识确定所述待截断文件;
[0165]对所述待截断文件加锁;
[0166]创建所述待截断文件对应的位图;
[0167]所述位图创建之后,对所述待截断文件解锁;
[0168]在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图用于记录所述数据块的标识,以及记录所述数据块的空间已释放。
[0169]可选地,在一个场景中,接口电路1001,还用于在所述释放所述数据块的空间之后,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0170]所述处理器1002还用于:
[0171]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0172]将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0173]可选地,在另一场景中,所述接口电路1001,还可以用于在所述释放所述数据块的空间之前,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置;
[0174]所述处理器1002,还用于:
[0175]根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0176]在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
[0177]可选地,所述处理器1002还可以用于:
[0178]将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同;
[0179]所述将所述待写入数据写入所述待写入数据的地址对应的存储空间中,包括:从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
[0180]在一个场景中,所述接口电路1001,还可以用于接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0181]所述处理器1002还可以用于:
[0182]根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放;
[0183]从所述待写入数据的地址对应的存储空间中获得所述待写入数据;
[0184]所述接口电路1001可以用于将所述待写入数据发送给所述客户端。
[0185]可选地,在另一场景中,所述接口电路1001,还用于:
[0186]接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;
[0187]所述处理器1001还用于:根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放;
[0188]所述接口电路1001还用于:向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
[0189]本实施例的装置,通过所述位图创建之后,对所述待截断文件解锁,在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,然后在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放的信息在记录截断过程的进度之后就向用户返回截断成功的消息,并将截断任务转入后台运行,由于对待截断文件解锁的步骤在释放所述数据块的空间的步骤之前,使得在实际释放数据块的空间的过程中能够支持新的对文件的访问操作,从而能够快速对用户返回截断成功,提高了便利性,并解决了现有文件系统截断过程太慢影响其它操作的问题,并提高了便利性。并且,在实际释放数据块的空间的过程中,写数据和读数据的操作能够顺利进行。
[0190]本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0191]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
【权利要求】
1.一种文件截断方法,其特征在于,包括: 接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间; 根据所述标识确定所述待截断文件; 对所述待截断文件加锁; 创建所述待截断文件对应的位图; 所述位图创建之后,对所述待截断文件解锁; 在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放。
2.根据权利要求1所述的方法,其特征在于,在所述释放所述数据块的空间之后,所述方法还包括: 接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置; 根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放; 将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
3.根据权利要求1所述的方法,其特征在于,在所述释放所述数据块的空间之前,所述方法还包括: 接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置; 根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放; 在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
4.根据权利要求3所述的方法,其特征在于,在所述在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中之前,还包括: 将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同; 所述将所述待写入数据写入所述待写入数据的地址对应的存储空间中,包括:从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
5.根据权利要求2所述的方法,其特征在于,还包括: 接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址; 根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放; 从所述待写入数据的地址对应的存储空间中获得所述待写入数据; 将所述待写入数据发送给所述客户端。
6.根据权利要求3或4所述的方法,其特征在于,还包括: 接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址; 根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放; 向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
7.一种文件截断装置,其特征在于,包括: 接收模块,用于接收客户端发送的文件截断指令,所述指令包括待截断文件的标识,所述待截断文件包括数据块,所述指令用于指示释放所述数据块的空间; 处理模块,用于: 根据所述标识确定所述待截断文件; 对所述待截断文件加锁; 创建所述待截断文件对应的位图; 所述位图创建之后,对所述待截断文件解锁; 在向所述客户端发送所述指令的响应消息之后,释放所述数据块的空间,并在所述位图记录所述数据块的标识,以及记录所述数据块的空间已释放。
8.根据权利要求7所述的装置,其特征在于,所述接收模块,还用于:在所述释放所述数据块的空间之后,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置; 所述处理模块还用于: 根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放; 将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
9.根据权利要求7所述的装置,其特征在于,所述接收模块,还用于: 在所述释放所述数据块的空间之前,接收所述客户端发送的写数据指令,所述写数据指令包括待写入数据以及所述待写入数据的地址,所述待写入数据的地址包括所述数据块的标识和所述待写入数据在所述数据块中的位置; 所述处理模块还用于: 根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放; 在释放所述数据块的空间后,将所述待写入数据写入所述待写入数据的地址对应的存储空间中。
10.根据权利要求9所述的装置,其特征在于,所述处理模块,还用于: 将所述待写入数据和全零数据组合后的数据写入缓存,所述组合后的数据的大小与所述数据块的大小相同,所述组合后的数据包括所述待写入数据,所述待写入数据在所述组合后的数据中的位置与所述待写入数据的地址在所述数据块中的位置相同; 所述将所述待写入数据写入所述待写入数据的地址对应的存储空间中,包括:从所述缓存中读取所述组合后的数据,写入所述数据块所在的存储空间中。
11.根据权利要求8所述的装置,其特征在于,所述接收模块,还用于: 接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址; 所述处理模块还用于: 根据所述待写入数据的地址和所述位图确定所述数据块的空间已被释放; 从所述待写入数据的地址对应的存储空间中获得所述待写入数据; 还包括发送模块,用于将所述待写入数据发送给所述客户端。
12.根据权利要求8或9所述的装置,其特征在于,所述接收模块,还用于: 接收所述客户端发送的读数据指令,所述读数据指令包括所述待写入数据的地址;所述处理模块还用于:根据所述待写入数据的地址和所述位图确定所述数据块的空间没有被释放; 所述发送模块还用于:向所述客户端发送所述读数据指令的响应消息,所述响应消息用于指示无数据。
【文档编号】G06F12/02GK104462403SQ201410763438
【公开日】2015年3月25日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】叶茂, 杨忠兵 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1