一种数据去重方法及装置

文档序号:1904104 发布日期:2021-11-30 浏览:1次 >En<

阅读说明:本技术 一种数据去重方法及装置 (Data deduplication method and device ) 是由 周文 于 2021-06-15 设计创作,主要内容包括:本申请公开一种数据去重方法及装置,该数据去重方法包括:获取待存储到目标存储空间中的第一数据,目标存储空间中已存储M个数据块,M为正整数;计算第一数据的数据内容的总和校验码;在确定第一数据的数据内容的总和校验码与M个数据块的数据内容的总和校验码都不相同的情况下,为第一数据分配第一数据块,将第一数据存储到第一数据块中;在确定第一数据的数据内容的总和校验码与M个数据块中的第二数据块的数据内容的总和校验码相同,且第二数据块的数据内容与第一数据的数据内容相同的情况下,将第二数据块的地址信息作为存储第一数据的数据块的地址信息记录到索引节点中。使得提升存储空间利用率的同时减少性能损耗。(The application discloses a data deduplication method and a data deduplication device, wherein the data deduplication method comprises the following steps: acquiring first data to be stored in a target storage space, wherein M data blocks have been stored in the target storage space, and M is a positive integer; calculating a sum check code of the data content of the first data; under the condition that the sum check code of the data content of the first data is determined to be different from the sum check codes of the data content of the M data blocks, distributing the first data block to the first data, and storing the first data into the first data block; in a case where it is determined that the checksum of the data content of the first data is identical to the checksum of the data content of the second data block of the M data blocks, and the data content of the second data block is identical to the data content of the first data, address information of the second data block is recorded into the index node as address information of the data block storing the first data. The utilization rate of the storage space is improved, and meanwhile, the performance loss is reduced.)

一种数据去重方法及装置

技术领域

本申请涉及计算机存储领域,尤其涉及一种数据去重方法及装置。

背景技术

随着科技的发展,电子产品使用的场景越来越丰富,需要存储的数据越来越多,用户对于存储空间的需求也越来越大,数据去重技术应运而生。

目前的数据去重技术中,通过散列算法或指纹算法等算法,为待存储的数据和已存储到存储空间中的数据块计算独特的标识符,查找存储空间中是否存在与该待存储的数据的标识符相同的目标数据块。若是,则仅存入指针,该指针指向存储目标数据块的原始位置。若否,则将该待存储的数据写入存储空间。使得文件中相同的数据只存储一份,相同数据共用同一个数据块。

然而,若将计算存储空间中除了目标数据块以外的其他数据块的标识符称为无效计算,则通过散列算法或指纹算法等查找存储空间是否存储有目标数据块的数据去重方法中无效计算所产生的运算量和功耗大。特别是当文件中大部分数据不相同的情况下,无效计算所产生的运算量和功耗很大。

因此,如何提供一种数据去重方法使得提升存储空间利用率的同时减少性能损耗,成为了

技术领域

内重要的研究课题。

发明内容

本申请提供一种数据去重方法及装置,用于减少待存储的数据与已存储到目标存储空间中的数据块进行数据内容比较所产生的计算量和功耗,提升存储空间利用率的同时减少性能损耗。

第一方面,本申请实施例提供一种数据去重方法,所述方法包括:获取待存储到目标存储空间中的第一数据,所述目标存储空间中已存储M个数据块,所述M为正整数;计算所述第一数据的数据内容的总和校验码;在确定所述第一数据的数据内容的总和校验码与所述M个数据块的数据内容的总和校验码都不相同的情况下,为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中;在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同,且所述第二数据块的数据内容与所述第一数据的数据内容相同的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中,所述索引节点用于记录数据与存储数据的数据块的地址信息的关联关系。

可理解的,该第一数据可以为一份文档中的部分文本内容,或者,该第一数据为一段视频中的部分图像帧等,本申请实施例对此不做限定。

可理解的,该目标存储空间可以为采用数据块存储数据的存储介质的存储分区,具体的,该采用数据块存储数据的存储介质可以为磁盘或固态硬盘等。

实施第一方面提供的方法,若该第一数据的总和校验码(checksum)与该M个数据块的总和校验码都不相同,则表明该第一数据的数据内容与该M个数据块的数据内容一定不相同,此时便不再进行第一数据和该M个数据块的数据内容比较,减少了当第一数据的数据内容和第二数据块的数据内容一定不同的情况下的数据内容比较所产生的计算量和功耗。在第二数据块的总和校验码与该第一数据的总和校验码相同,也即该第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同。若确认第一数据的数据内容与该第二数据块的数据内容一致,则让该第一数据与该第二数据块共用同一个数据块的地址信息,不需为该第一数据分配新的数据块,使得提升存储空间利用率的同时减少了性能损耗。

在一种可能的实施方式中,所述在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同,且所述第二数据块的数据内容与所述第一数据的数据内容相同的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中,包括:在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同,且所述第二数据块的数据内容与所述第一数据的数据内容相同,以及所述第二数据块的第一被引用次数小于第一阈值的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中,并将所述第一被引用次数加1;所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。

可理解的,该第二数据块可以为该M个数据块中的任一数据块。

可选的,确定该第一数据的数据内容的总和校验码与该M个数据块中的第二数据块的数据内容的总和校验码是否相同,与确定该第一被引用次数是否小于第一阈值,同时执行或先后执行,先后顺序不限。示例性的,在确定该第一数据的总和校验码与所述M个数据块中的该第二数据块的总和校验码相同后,再确定该第一被引用次数是否小于第一阈值。或者,在确定该第一被引用次数小于第一阈值后,再确定该第一数据的数据内容的总和校验码与所述M个数据块中的该第二数据块的数据内容的总和校验码是否相同。

可选的,确定该第一数据的数据内容与该第二数据块的数据内容是否相同,与确定该第一被引用次数是否小于第一阈值,同时执行或先后执行,先后顺序不限。示例性的,在确定该第一数据的数据内容与该第二数据块的数据内容相同后,再确定该第一被引用次数是否小于第一阈值。或者,在确定该第一被引用次数小于第一阈值后再确定该第一数据的数据内容与该第二数据块的数据内容是否相同。

在一种可能的实现方式中,所述方法还包括:在确定所述M个数据块中的N个第二数据块的数据内容的总和校验码与所述第一数据的数据内容的总和校验码相同,且所述N个第二数据块的第一被引用次数都大于或等于第一阈值的情况下,为所述第一数据分配第一数据块,并将所述第一数据存储到所述第一数据块中;所述N为小于或等于M的整数,所述第一被引用次数为重复计数表中记录的所述第二数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系。

在本申请实施例中,为数据去重方法设置数据去重上限(该第一阈值即为该数据去重上限)。一方面,若不设置该数据去重上限,第二数据对应的目标数据块的被引用次数会逐渐增大,导致目标数据块的被访问的频率也逐渐增多,而长期反复地读取目标存储空间中同一个目标数据块的数据,会加速存储该目标数据块的存储介质(目标存储空间)的损坏,缩短存储介质的使用寿命。因此,设置该数据去重上限,可以避免目标数据块被频繁访问而导致的加速存储介质损坏速度的问题。另一方面,目标数据块被引用次数越多,重复度越高,会为目标直接索引表的索引带来一定的困难,以及,导致修改操作的速度变慢,降低修改操作的效率。因此,设置该数据去重上限,可以避免重复度过高带来的索引困难和重复度过高带来的降低修改操作的效率等问题。

在一种可能的实现方式中,在所述获取待存储到目标存储空间中的第一数据之前,所述方法还包括:在接收到将第三数据修改为第四数据的指令后,获取与所述第三数据对应的第三数据块的第二被引用次数;所述第二被引用次数为重复计数表中记录的所述第三数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第二被引用次数等于1的情况下,将所述第四数据作为所述第一数据,并删除与所述第三数据相关的信息;在确定所述第二被引用次数大于1的情况下,将所述第四数据作为所述第一数据,并将所述重复计数表中的所述第二被引用次数减1。

可选的,上述删除与该第三数据相关的信息可以为,将上述索引节点中记录的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息;将第三数据对应的数据块删除;以及,将重复计数表中与该第三数据相关的记录删除。

可选的,上述删除与该第三数据相关的信息还可以为,将上述索引节点中记录的该第三数据对应的数据块信息删除(该数据块信息包括第三数据在该索引节点记录的该第三数据与该第三数据对应的数据块的地址信息的关联关系);在该索引节点中添加该第四数据与该第四数据的数据块地址信息的关联关系;将第三数据对应的数据块删除;以及,将第二信息表中与第三数据相关的记录删除。

可选的,若存储空间中不存在与该第四数据块的数据内容相同的数据块,上述删除与该第三数据相关的信息还可以为,将第三数据的数据块内容替换(修改)为该第四数据的数据内容,以及将第二信息表中该第三数据对应的总和校验码替换(修改)为该第四数据对应的总和校验码。

在本申请实施例中,一方面,在修改数据时,若该第三数据在多处被引用,则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则只将第二被引用次数减1,而不对该第三数据的数据内容进行直接操作,保证了去重机制下数据的完整性。另一方面,对修改后的该第四数据作为第一数据进行数据去重判断,查看目标存储空间中是否已经存储有与该第四数据的数据内容相同的数据块,使得在需要存储数据的场景下都进行数据去重,进一步提高存储空间利用率。

在一些可能的实施方式中,在接收到删除第五数据的指令后,获取所述第五数据对应的第五数据块的第三被引用次数;所述第三被引用次数为重复计数表中记录的所述第五数据块的地址信息被引用的次数,所述重复计数表用于记录数据块与数据块的地址信息被重复引用的次数的关联关系;在确定所述第三被引用次数等于1的情况下,删除与所述第五数据相关的信息;在确定所述第三被引用次数大于1的情况下,将所述重复计数表中所述第三被引用次数减1。

在本申请实施例中,在第五数据被多处引用时,为保证除了第五数据以外的其他引用了该第五数据对应的目标数据块的数据的使用不受影响,只将第三被引用次数减1,而不对该第五数据的数据内容进行直接操作,保证了去重机制下数据的完整性。

在一些可能的实施方式中,所述在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同,且所述第二数据块的数据内容与所述第一数据的数据内容相同的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中,包括:在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同的情况下,计算所述第一数据的数据内容的第一标识符和所述第二数据块的数据内容的第二标识符;在确定所述第一标识符与所述第二标识符相同的情况下,确定所述第二数据块的数据内容与所述第一数据的数据内容相同;在确定所述第二数据块的数据内容与所述第一数据的数据内容相同的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中。

可选的,判断该第一数据的数据内容与该第二数据块的数据内容是否相同,可以通过计算该第一标识符和该第二标识符是否相同得到。也可以通过调用compare函数或equals方法等判断该第一数据的数据内容与该第二数据的数据内容是否相同,适用性强。

在本申请实施例中,一方面,采用标识符比较数据内容是否相同,可以对已计算过的标识符做存储操作,以使得该标识符可以一次计算多次使用,可减少不必要重复计算;另一方面,相比于调用compare函数或equals方法等直接比较两个数据块大小的数据内容是否相同,比较标识符所产生的性能消耗会更少。而对于调用compare函数或equals方法等进行数据内容比较,对技术人员的技术要求更低。

在一些可能的实施方式中,所述总和校验码包括循环冗余校验码。

可选的,该第一数据的总和校验码的计算方式可以为,通过循环冗余校验(cyclicredundancy check 32,CRC32)计算CRC码,该CRC码即为该总和校验码的值。可选的,该第一数据的checksum的计算方式还可以为,将第一数据的数据内容按2byte划分开来,每2byte组成一个16bit的值,如果最后有单个byte的数据,补一个byte的0组成2byte;将所有的16bit值累加到一个32bit的值中;将32bit值的高16bit与低16bit相加到一个新的32bit值,若新的32bit值大于0Xffff,再将新值的高16bit与低16bit相加,最后将所得的值按位取反,即得到该总和校验码的值。

第二方面,本申请实施例提供一种数据去重装置,包括:

第一获取单元,用于获取待存储到目标存储空间中的第一数据,所述目标存储空间中已存储M个数据块,所述M为正整数;

计算单元,用于计算所述第一数据的数据内容的总和校验码;

第一存储单元,用于在确定所述第一数据的数据内容的总和校验码与所述M个数据块的数据内容的总和校验码都不相同的情况下,为所述第一数据分配第一数据块,将所述第一数据存储到所述第一数据块中;

第二存储单元,用于在确定所述第一数据的数据内容的总和校验码与所述M个数据块中的第二数据块的数据内容的总和校验码相同,且所述第二数据块的数据内容与所述第一数据的数据内容相同的情况下,将所述第二数据块的地址信息作为存储所述第一数据的数据块的地址信息记录到索引节点中,所述索引节点用于记录数据与存储数据的数据块的地址信息的关联关系。

第三方面,本申请实施例提供一种电子设备,所述电子设备包括:一个或多个处理器和存储器;所述存储器与所述一个或多个处理器耦合,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,所述一个或多个处理器调用所述计算机指令以使得所述电子设备执行第一方面或第一方面的任意可能的实现方式中的方法。

第四方面,本申请实施例提供一种芯片系统,所述芯片系统应用于电子设备,所述芯片系统包括一个或多个处理器,所述处理器用于调用计算机指令以使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。

第五方面,本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。

第六方面,本申请实施例提供一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行所述第一方面或第一方面的任意可能的实现方式所示的方法。

附图说明

图1A为本申请实施例提供的一种第一文件的inode的地址项的索引结构的示意图;

图1B-图1C为本申请实施例提供的采用本申请提供的数据去重方法存储文件A中的数据的示意图;

图2A-图2G为本申请实施例提供的用户界面示意图;

图3A为本申请实施例提供的一种数据去重的系统框架图;

图3B为本申请实施例提供的一种第一信息表的示意图;

图3C为本申请实施例提供的一种第二信息表的示意图;

图3D为本申请实施例提供的又一种第二信息表的示意图;

图3E为本申请实施例提供的一种数据块表和第二信息表的初始值的示意图;

图4A-图4B为本申请实施例提供的一种数据去重方法的流程示意图;

图5为本申请实施例提供的一种修改第三数据的数据去重方法的流程示意图;

图6为本申请实施例提供的一种删除第五数据的数据去重方法的流程示意图;

图7为本申请实施例提供的又一种数据去重方法的流程示意图;

图8为本申请实施例提供的电子设备100的结构示意图。

具体实施方式

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

本申请的说明书、权利要求书及附图中的术语“第一”和“第二”等仅用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备等,没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元等,或可选地还包括对于这些过程、方法、产品或设备等固有的其它步骤或单元。

在本文中提及的“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员可以显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上,“至少两个(项)”是指两个或三个及三个以上,“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”。

以下详细介绍本申请涉及的术语。

(1)总和校验码checksum:

在本申请实施例中,总和检验码checksum为用于在数据处理和数据通信领域中,校验目的一组数据项的和。在本申请实施例中,在需要将第一数据存储到目标存储空间的情况下,通过判断该第一数据的checksum与目标存储空间中第二数据块的checksum是否相同,从而判断该第一数据的数据内容与该第二数据块的数据内容是否可能相同。

可选的,该第一数据的checksum的计算方式可以为,通过循环冗余校验(cyclicredundancy check 32,CRC32)计算CRC码,该CRC码即为checksum的值。具体的,若第一数据对应的信息字段(该信息字段是指该第一数据的二进制编码序列)为K位二进制编码序列,校验字段为R位二进制编码序列,R次多项式为g(x)。则该CRC码的计算方式为在K位信息字段的后面添加R个0,再除以g(x)对应的二进制编码序列,得到的余数即为CRC码对应的二进制编码序列(该CRC码对应的二进制编码序列应为R-1位;若不足,则在高位补0)。

可选的,该第一数据的checksum的计算方式还可以为,将第一数据的数据内容按2byte划分开来,每2byte组成一个16bit的值,如果最后有单个byte的数据,补一个byte的0组成2byte;将所有的16bit值累加到一个32bit的值中;将32bit值的高16bit与低16bit相加到一个新的32bit值,若新的32bit值大于0Xffff,再将新值的高16bit与低16bit相加,最后将所得的值按位取反,即得到checksum值。

由上述checksum的计算方式可知,对于checksum不同的两个数据,这两个数据的数据内容一定不相同;对于checksum相同的两个数据,这两个数据的数据内容可能相同也可能不相同。可理解的,还可以通过其他计算方式计算该checksum,本申请实施例对此不做限定。

示例性的,第一数据的checksum与第二数据块的checksum不同,则表示第一数据的数据内容与该第二数据块的数据内容一定不同;若该第一数据的checksum与该第二数据的checksum相同,则该第一数据的数据内容与第二数据块的数据内容可能相同也可能不同。

可理解的,该第二数据块为目标存储空间中存储了第二数据的数据块,该第二数据块的数据内容即为该第二数据的数据内容。可理解的,第一数据的checksum是指该第一数据的数据内容的checksum(本文关于“第一数据的checksum”的定义均与此相同),第二数据块的checksum是指该第二数据块的数据内容的checksum(本文关于“第二数据块的checksum”的定义均与此相同)。

(2)索引节点inode:

可理解的,一份第一文件对应一个inode,该inode包含第一文件的元信息以及地址项。其中,该第一文件的元信息包括第一文件的创建者、第一文件的创建日期、第一文件的大小以及第一文件的inode号码等。其中,该第一文件inode号码可以使得用户通过文件名打开第一文件。具体的,文件系统通过该文件名查找对应的inode号码,通过该inode号码获取inode信息,根据该inode信息查找第一文件所在的数据块,读出数据。

在本申请实施例中,inode的地址项用于记录与逻辑块号对应的数据块在目标存储空间的中的地址信息。该与逻辑块号对应的数据块用于存储该第一文件中与该逻辑块号对应的数据内容。在本申请实施例中,第一文件的inode中包含的地址项的索引结构可以为直接索引结构、一级间接索引结构、二级间接索引结构或三级间接索引结构。可理解的,直接索引结构为包括一个或多个直接索引块的索引结构;一级间接索引结构为包括一个或多个直接索引块和一个或多个一级间接索引块的索引结构;二级间接索引结构为包括一个或多个直接索引块、一个或多个一级间接索引块、以及一个或多个二级间接索引块的索引结构;三级间接索引结构为包括一个或多个直接索引块、一个或多个一级间接索引块、一个或多个二级间接索引块、以及一个或多个三级间接索引块的索引结构。其中,直接索引块用于记录目标数据块的地址信息,该目标数据块为存储了数据内容的数据块;也即一个该直接索引块为一个地址项,该地址项用于记录目标数据块的地址信息。一级间接索引块用于记录第一索引块的索引块地址信息,该第一索引块中用于记录多个目标数据块的地址信息(也即一个该第一索引块包括多个地址项)。二级间接索引块用于记录第二索引块的索引块地址信息,该第二索引块中用于记录多个第一索引块的索引块地址信息。三级间接索引块用于记录第三索引块块的索引块地址信息,该第三索引块中存储了多个第二索引块的索引块地址信息。

具体地,文件系统的inode包括的地址项中,有M个地址项为直接索引块,有J个地址项为一级间接索引块,有G个地址项为二级间接索引项,有L个地址项为三级间接索引项。文件系统中一个地址项大小为X字节,目标存储空间索引块大小为N,数据块大小为H。则一个索引块可以存储N/X个地址项。可理解的,该地址项大小指的是用于存储索引块的地址信息或用于存储数据块的地址信息的地址项的大小。其中,M为大于0的整数,J、G以及L为大于或等于0的整数,N、X以及H大于0。

具体地,直接索引块中的M个地址项可以用于记录逻辑块号为0至(M-1)的数据块的地址信息,而逻辑块号为0-(M-1)的数据块总共可以容纳的最大数据内容的大小为M*H。

具体地,一级间接索引块中的J个地址项可以用于记录J个第一索引块的索引块的地址信息,每个该第一索引块可以记录N/X个地址项,则该J个第一索引块可以用于记录逻辑块号为M至J*N/X+(M-1)的数据块的地址信息,而逻辑块号为M至J*N/X+(M-1)的数据块总共可以容纳的最大数据内容的大小为J*N/X*H。

具体地,二级间接索引块中的G个地址项可以用于记录G个第二索引块的索引块地址信息,一个该第二索引块中可以包括N/X个第一索引块的索引块的地址信息(每个第二索引块可以记录N/X个第一索引块的索引块的地址信息,而每个第一索引块又可以记录N/X个地址项,所以该第二索引块可以用于记录(N/n)2个地址项),即该G个第二索引块可以用于记录逻辑块号为J*N/X+M至G*(N/X)2+J*N/X+(M-1)的数据块的地址信息,而逻辑块号为J*N/X+M至G*(N/X)2+J*N/X+(M-1)的数据块总共可以容纳的最大数据内容的大小为G*(N/X)2*H。

具体地,三级间接索引块中的L个地址项可以用于记录L个第三索引块的索引块的地址信息,一个该第三索引块中可以包括N/X个第二索引块的索引块的地址信息(每个第三索引块可以记录N/X个第二索引块的索引块的地址信息,而每个第二索引块可以记录N/X个第一索引块的索引块的地址信息,且每个第一索引块又可以记录N/X个地址项,所以该第三索引块可以用于记录(N/X)3个地址项),即该第三索引块可以用于记录逻辑块号为G*(N/X)2+N/X+M至L*(N/X)3+G*(N/X)2+J*N/X+(M-1)的数据块的地址信息,而逻辑块号为G*(N/X)2+N/X+M至L*(N/X)3+G*(N/X)2+J*N/X+(M-1)的数据块总共可以容纳的最大数据块内容的大小为L*(N/X)3*H。

由上可知,当第一文件大小为小于或等于M*H的情况下,inode的地址项结构选择直接索引块;当第一文件大小为大于M*H且小于或等于M*H+J*N/X*H的情况下,inode的地址项结构选择一级间接索引块;当第一文件大小为大于M*H+J*N/X*H且小于或等于M*H+J*N/X*H+G*(N/X)2*H的情况下,选择二级间接索引块;当第一文件大小为大于M*H+J*N/X*H+G*(N/X)2*H且小于或等于M*H+J*N/X*H+G*(N/X)2*H+L*(N/X)3*H(为便于描述,将该数值记为F)的情况下,选择三级间接索引块(下文对于根据文件大小选择文件的inode的地址项的索引结构的涵义均与此相同)。

可理解的,当地址项大小能记录的最大数值2X*8*H大于或等于上述数值F的请情况下,可容纳的数据内容的计算满足以上公式;而当地址项大小能记录的最大数值2X*8*H小于上述数值F的情况下,可容纳的最大数据内容与地址项能记录的最大数值一致。示例性的,若地址项大小为4字节(4字节等于32bit),数据块大小为4k,则该地址项的bit位可记录的数据块的地址信息的最小数值为0,最大数值为232,该0至232的数据块的地址信息对应的数据块总共可以容纳的最大数据内容的大小为232*4k。若索引结构能记录的最大数据内容F的值小于或等于232*4k,则索引结构能记录的最大数据内容的计算满足以上计算公式;若F的值大于232*4k,则索引结构能记录的最大数据内容与该232*4k一致。

示例性的,如图1A所示,文件系统的inode包括8个地址项,其中4个地址项为直接索引块,2个地址项为一级间接索引块,1个地址项为二级间接索引块,1个地址项为三级间接索引块。每个地址项大小为4字节,索引块大小和数据块大小均为1k。则一个索引块可以存储1k/4=256个地址项。

则直接索引块中的4个地址项可以用于记录逻辑块号为0-3的数据块的地址信息,具体的,分别用于记录逻辑块号为block0、block1、block2以及block3的数据块的地址信息。示例性的,若逻辑号为block0的地址项存储的数据块地址信息为是addr1,则表示数据块地址信息为addr1的数据块为该地址项所指向的数据块。其中,逻辑块号为0-3的数据块总共可容纳的最大数据内容大小为4*1k=4k。

一级间接索引块中的2个地址项中的第一个地址项可以用于记录一个第一索引块的索引块的地址信息,该第一索引块可以用于记录了256个数据块的地址信息,也即记录了逻辑块号为4至259(即256+3=259)的数据块的地址信息。一级间接索引块中的2个地址项中的第二个地址项,可以用于记录另外一个第一索引块的索引块的地址信息,该另外一个第一索引块对应记录了逻辑块号为260至515(即2*256+3=515)的数据块的地址信息。也就是说,一级间接索引块中总共可以记录2*256=512个数据块的地址信息,也即记录了逻辑块号为4至515的数据块的地址信息。逻辑块号为4-515数据块总共可容纳的最大数据内容大小为1k*512=512k。

二级间接索引块中的1个地址项用于记录一个第二索引块的索引块的地址信息,该第二索引块记录了256个第一索引块的索引块的地址信息,每个第一索引块都记录了256个数据块的地址信息,也即该二级间接索引块总共记录了1*256*256=65536个数据块的地址信息,也即记录了逻辑块号为516至66051(即1*256*256+515=66051)的数据块的地址信息。逻辑块号为516至66051的数据块总共可容纳的最大数据内容大小为1k*65536=65536k。

三级间接索引块中的1个地址项用于记录一个第三索引块的索引块的地址信息,该第三索引块记录了256个第二索引块的索引块的地址信息,每个该第二索引块都记录了256个第一索引块的索引块的地址信息,每个第一索引块都记录了256个数据块的地址信息,也即该三级间接索引块总共记录了1*256*256*256=16777216个数据块的地址信息,也即记录了逻辑块号为66052至16777731(即1*256*256*256+515)的数据块的地址信息。逻辑块号为66052至16777731的数据块总共可容纳的最大数据内容大小为1k*16777216。

由上可知,当第一文件大小为小于或等于4k的情况下,inode的地址项结构选择直接索引块。当第一文件大小为大于4k且小于或等于512+4=516k的情况下,inode的地址项结构选择一级间接索引块;当第一文件大小为大于516k且小于或等于(65536+4)=65540k的情况下,inode的地址项结构选择二级间接索引块;当第一文件大小为大于65540k且小于或等于(16777216+4)=16777220k的情况下,选择三级间接索引块。

可理解的,上述M、J、G、L、N、X以及H的值视具体的文件系统而定。示例性的,对于EXT4文件系统而言M=12,J=1,G=1,L=1,N为1k、2k或4k,X=4字节,H为1k、2k或4k。对于F2FS文件系统而言,M=929,J=2,G=2,L=1,N=4k,X=4字节,H=4k。

在本申请实施例中,该第一文件中与该逻辑块号对应的数据内容为该第一文件中目标起始字节到目标结束字节间的数据内容。也就是说,该逻辑块号与第一文件中目标起始字节到目标结束字节的数据内容间存在关联关系。可理解的,该目标起始字节或目标结束字节的具体数值以该第一文件中的第0字节为参照。具体的,逻辑块号为0的逻辑块号与第一文件中目标起始字节为0到目标结束字节为H的数据内容之间存在关联关系;逻辑块号为1的逻辑块号与第一文件中目标起始字节为(H+1个字节)到目标结束字节为2H的数据内容之间存在关联关系,以此类推。并根据该关联关系和该逻辑块号,可以查找到目标存储空间中的用于存储第一文件中的目标数据的数据块。具体地,根据目标数据的目标起始字节和目标结束字节确定目标数据所在的目标逻辑块号,再根据该目标逻辑块号从第一文件的inode的地址项中查找与该逻辑块号对应的数据块的地址信息。可理解的,目标数据块的地址信息为数据块表(该数据块表中记录了目标数据块在数据块表中的偏移量、以及对应的数据内容之间的关联关系)中与该目标数据块对应的偏移量。示例性的,目标存储空间中包括100个数据块,该100个数据块在数据块表中分别编号为0-99并按行存储,其中,编号为0的数据块(也即数据块表中的第一行记录)偏移量为0,则该编号为0的数据块的地址信息为0,编号为1(也即数据块表中的第二行记录)的数据块的偏移量为1,则该编号为1的数据块的地址信息为1,以此类推。因此,由该目标数据块的地址信息可以查找到该数据块表中与该目标数据块的地址信息对应的数据内容。(本文关于根据目标逻辑块号查找目标数据块的地址信息,再根据该目标数据块的地址信息查找该目标数据块对应的数据内容的涵义均与此相同)。

示例性的,在inode的地址项的结构如图1A所示的情况下,若目标数据的目标起始字节为500字节处且目标结束字节为1000字节处,由于(500字节>0字节)且(1000字节<1024字节),而逻辑块号为0的逻辑块号与目标起始字节为0字节到目标结束字节为1024字节(1024字节=1k)的数据内容存在关联关系,则该目标数据占用了目标逻辑块号为0的逻辑块号。而目标逻辑块号为0的逻辑块号对应的地址项中存储了对应的数据块的地址信息,该数据块的地址信息为addr1,根据该数据块的地址信息可以查找到与目标数据对应的数据块。

示例性的,若目标数据的起始节点为513025字节处且目标结束字节为514030字节处,由于(513025字节>501k)且(514030字节<502k),又逻辑块号为501的逻辑块号与目标起始字节为501k+1字节处到目标结束字节为502k的数据内容存在关联关系,则该目标数据与目标逻辑块号为501的逻辑块号存在关联关系。

可理解的,该目标数据也可以对应两个或两个以上的逻辑块号。示例性的,该目标数据的起始节点为500字节处且结束节点为3000字节处,由于(1k>500字节>0字节)且(3000字节<3k),又逻辑块号为0的逻辑块号与目标起始字节为0字节处到目标结束字节为1k的数据内容存在关联关系,逻辑块号为1的逻辑块号与目标起始字节为(1k+1字节)到目标结束字节为2k的数据内容存在关联关系,逻辑块号为2的逻辑块号与目标起始字节为(2k+1字节)到目标结束字节为3k的数据内容存在关联关系,则该目标数据所占用的目标逻辑块号包括0、1以及2的逻辑块号。

可理解的,在由于逻辑块号对应的数据内容进行了修改操作,或者,由于该逻辑块号之前的逻辑块号对应的数据内容进行了修改操作或删除操作,使得该逻辑块号对应的数据内容在第一文件中的第一目标起始字节变化为第二目标起始字节,第一目标结束字节变化为第二目标结束字节的情况下,该逻辑块号与第二目标起始字节和第二目标结束字节重新建立新的关联关系。

示例性的,在逻辑块号对应的数据内容在第一文件中的第一目标起始字节原本为50字节处,第一目标结束字节为100字节处,而该逻辑块号对应的数据内容(即第50字节至100字节的数据内容,总计50字节的数据内容)被修改为总计20字节的数据内容,该逻辑块号的上一逻辑块号的数据内容被删除了5字节的数据内容,则该第一目标起始字节变化为45字节(50-5=45),该第二目标结束字节变化为65字节(45+20=65)。则该逻辑块号与第一目标起始字节至第二目标结束字节的数据内容的关联关系,修改为,该逻辑块号与第二目标起始字节为45字节处至第二目标结束字节为65字节处的数据内容的关联关系。

在一些数据去重的实现方式中,会通过散列算法或指纹算法,为文件中待存储的第一数据和已存储到目标存储空间中的第二数据块形成独特的标识符,通过标识符判断数据是否重复。具体的,在需要用到第二数据块的标识符时计算该第二数据块的数据内容的第二标识符,将该第二标识符与该第一数据的第一标识符作比较,直到找到与该第一标识符相等的目标第二标识符;又或者,预先计算所有第二数据块的第二标识符,并将第二数据块与第二标识符的关联关系记录到目标表中,通过遍历该目标表查找与该第一标识符相等的目标第二标识符。

若将计算除了目标第二标识符之外的其他第二标识符称为无效计算,则无论是通过上面的哪种方式,无效计算所产生的运算量和功耗都很大。

而采用本申请提供的数据去重方法,先通过总和校验码checksum判断第一数据的数据内容和第二数据块的数据内容是否可能相同;在第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同。减少了当第一数据的数据内容和第二数据块的数据内容一定不同的情况下的数据内容比较所产生的计算量和功耗,提升存储空间利用率的同时减少了性能损耗。

示例性的,目标存储空间中包括100个已存储了数据内容的第二数据块,第一数据的数据内容与第80个目标数据块的数据内容相同,则采用上述散列算法或指纹算法的方法判断数据内容是否重复,至少需要计算80个第二数据块的标识符后才能查找到与第一标识符相同的目标第二标识符,其中无效计算至少包括计算79个第二数据块的标识符。可见,无效计算产生的运算量和功耗很大。然而,采用本申请提供的方法,需要计算80个第二数据块的checksum,若其中有10个第二数据块的checksum与第一数据的checksum相同,则再计算这10个第二数据块的标识符,则无效计算包括计算80个数据块的checksum和计算9个数据块的标识符。

由于计算checksum涉及的只是二进制位的逻辑运算,无效计算产生的计算量很小,且checksum的计算方法简单易懂,对开发人员的技术要求不高。相比之下,采用散列算法或指纹算法等算法计算独特标识符,无效计算产生的算法复杂度高、计算量大、功耗大。

特别是在文件中大部分数据不重复,且不同的数据内容的checksum恰好都不相同的情况下,本申请提供的方法所产生的有益效果显著。示例性的,目标存储空间中包括1000个已用于存储数据内容的第二数据块,上述1000个第二数据块中,不存在目标数据块,该目标数据块的数据内容与第一数据的数据内容相同的情况下,则采用上述散列算法或指纹算法的方法判断数据内容是否重复需要计算1000个第二数据块的标识符,且都为无效计算,产生的运算量和功耗庞大。若恰好该1000个第二数据块的checksum均与第一数据的checksum不相同,则采用本申请提供的方法,只需要计算1000个第二数据块的checksum,而由于checksum计算方法比散列算法或指纹算法计算独特标识符的计算方法简单,无效计算所产生的计算量和功耗大大减小。

示例性的,若文件A和文件B所存储的数据内容如图1B所示,其中,s1至s6的每个数据内容的大小都与数据块容量大小一致且都为1k(可理解的,1k数据可以为1024个全英文字符,或者,1k数据也可以为512个全中文字符等,本文对此不做限定)。分别依次将文件A和文件B的数据读取到内存中并向目标存储空间申请用于存储文件A和文件B的数据内容的数据块。假设目标存储空间在存储文件A和文件B之前未存储其他数据内容,则采用本申请的方法存储该文件A和文件B,得到存储到目标存储空间中的数据内容如图1B所示,目标存储空间中使用了6个数据块分别存储了s1、s2、s3、s4、s5、s6,对于相同文件中的重复数据(同为文件A中的重复数据或是同为文件B中的重复数据)以及不同文件中的重复数据(文件A与文件B之间的重复数据)s1、s3和s5只存储了一份数据。

具体的,对于文件A和文件B中的重复数据s3,如图1C所示,该文件A的inode和文件B的inode中记录的重复数据s3的数据块的地址信息指向同一个数据块。

可理解的,该文件A和文件B的数据大小总计10k,实际存储到目标存储空间中的数据为6k,节省了4k的存储空间。存储文件A和文件B的数据产生的计算包括,计算10个字符串的checksum,以及最少只需要计算3个字符串的标识符或者最少只需进行4次数据内容的比较。

下面介绍本申请实施例提供的用户界面。

可理解的,本申请实施例提供的方法可以由任意采用目标存储空间中的数据块进行数据存储的电子设备执行。示例性的,该电子设备包括移动终端、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本,以及蜂窝电话等。为便于描述,以移动终端作为该电子设备的一个示例,介绍本申请实施例提供的用户界面。

首先,介绍数据去重功能所涉及的用户界面。请参阅图2A-图2G,图2A-图2G是本申请实施例提供的一种用户界面的示意图。如图2A所示,电子设备显示主屏幕界面10。如图2A所示,主屏幕界面10包括日历小工具(widget)101、天气小工具102、应用程序图标103、状态栏104以及导航栏105。其中:

日历小工具101可用于指示当前时间,例如日期、星期几、时分信息等。

天气小工具102可用于指示天气类型,例如多云转晴、小雨等,还可以用于指示气温等信息,还可以用于指示地点。

应用程序图标103可以包含例如微信(Wechat)的图标、推特(Twitter)的图标、脸书(Facebook)的图标、微博(SinaWeibo)的图标、QQ(Tencent QQ)的图标、WPS的图标和备忘录的图标1031等,还可以包含其他应用的图标,本申请实施例对此不作限定。任一个应用的图标可用于响应用户的操作,例如触摸操作,使得电子设备启动图标对应的应用。可理解的,每个上述应用程序会相应产生文件数据,这些文件数据将存储到数据块中。

状态栏104中可以包括运营商的名称(例如中国移动)、时间、WI-FI图标、信号强度和当前剩余电量。

导航栏105可以包括:返回按键1051、主界面(home screen)按键1052、呼出任务历史按键1053等系统导航键。其中,主屏幕界面10为电子设备100在任何一个用户界面检测到作用于主界面按键1052的用户操作后显示的界面。当检测到用户点击返回按键1051时,电子设备100可显示当前用户界面的上一个用户界面。当检测到用户点击主界面按键1052时,电子设备100可显示主屏幕界面10。当检测到用户点击呼出任务历史按键1053时,电子设备100可显示第一用户最近打开过的任务。各导航键的命名还可以为其他,比如,1051可以叫BackButton,1052可以叫Home button,1053可以叫Menu Button,本申请对此不做限定。导航栏105中的各导航键不限于虚拟按键,也可以实现为物理按键。

如图2A和图2B所示,响应于作用在备忘录的图标1031的用户操作,例如触摸操作,电子设备可显示备忘录应用界面20。备忘录应用界面20可以包含备忘录历史存储记录(如图中的“会议记录1”、“会议记录2”等)和新增备忘录控件201。如图2B和图2C所示,响应于作用在新增备忘录控件201的用户操作,例如触摸操作,电子设备可显示应用界面30。应用界面30可以包含保存控件301和取消控件302。其中,保存控件301,用于响应用户操作保存新增备忘录数据内容;取消控件302,用于响应用户操作丢弃已编辑的新增备忘录数据内容,也即对新增备忘录数据内容不做保存,返回用户界面20。

用户可点击保存控件301,响应于该第二用户操作,即作用在保存控件301的点击操作,电子设备启动数据存储,以存储上述新增备忘录数据内容,并在数据存储过程中执行本申请提供的数据去重方法。示例性的,上述电子设备启动数据存储包括:将该新增备忘录数据内容按数据块容量大小读取到内存中,并为读取到内存中的数据申请数据块,示例性的,该新增备忘录数据内容被读取到内存后的数据内容可以为,如图2B读取到内存中的文件A的数据内容所示。

如图2D和图2E所示,响应于用户界面20中作用在目标备忘录的点击操作,进入用户界面40,该用户界面40包括该目标备忘录的数据内容(例如,该目标备忘录的数据内容为“会议记录8”)、保存控件401和取消控件402。其中,该保存控件401,用于响应用户操作保存编辑修改后的数据内容;取消控件402,用于响应用户操作取消保存本次修改数据。用户可编辑该目标备忘录的数据内容,示例性的,如图2E所示,在数据内容“会议记录8”之后追加数据内容“(重要会议)”,用户点击保存控件401,响应于该第三用户操作,即作用在保存控件401的点击操作,电子设备启动数据更新存储(即将数据内容“会议记录8”修改为“会议记录8(重要会议)”),并在数据存储过程中执行本申请提供的数据去重方法。

如图2F和图2G所示,响应于用户界面20中作用在目标备忘录的长按操作(也可以为其他操作,例如向左滑动,本文对此不做限定),进入用户界面50,该用户界面50包括保存控件501和取消控件502。其中,该保存控件501,用于响应于用户操作保存更新该目标备忘录的数据内容;该取消控件502,响应于用户操作,返回用户界面20,不对用户删除的数据内容做保存更新操作。用户可删除用户界面50中目标备忘录的一些数据内容,示例性的,用户将该目标备忘录的“会议记录3”的数据内容删除,并点击保存控件501,响应于该第四用户操作,即作用在保存控件501的点击操作,电子设备启动删除数据任务(即将该目标备忘录所包括的数据内容全部删除),并在删除数据任务过程中执行本申请提供的数据去重方法。

下面结合附图对本申请作进一步介绍。

在本申请实施例中,目标存储空间可以为采用数据块存储数据的存储介质的存储分区,具体的,该采用数据块存储数据的存储介质可以为磁盘或固态硬盘等,本文对此不做限定。为便于描述,本文将以磁盘作为该存储介质为例,以目标磁盘分区作为该目标存储空间为例展开详细描述。可理解的,该目标磁盘分区为磁盘中的可读可写分区或只读分区。

请参阅图3A,图3A为本申请实施例提供的一种数据去重的系统框架图。该系统框架图包括文件层301和索引节点(inode)层302。

其中,该文件层301包括各类应用(application,app)的文件,示例性的,该文件层301包括A应用的a文件和b文件以及B应用的c文件。该索引节点层302包括虚拟文件系统(virtual file system,VFS)层3201、以及文件系统层3202,该文件系统层3202包括F2FS(flash friendly file system,F2FS)、EXT4(fourth extended filesystem,EXT4)、EROFS(extendable read-only file system,EROFS)以及其他文件系统中的一项或多项文件系统。可理解的,文件系统用于明确目标磁盘分区存储文件的方法和数据结构,实现对文件的按名存取。其中,该F2FS为新型开源flash文件系统,主要用于存取计算机闪存设备(NANDflash memory,NAND)的闪存数据;该EXT4为日志文件系统,主要用于存取日志文件;该EROFS为超级文件系统,主要用于存取系统文件。示例性的,若a文件和b文件为系统文件,则a文件的inode应存储在EROFS文件系统中;c文件为日志文件,则c文件的inode应存储在EXT4文件系统中。

可理解的,磁盘中的目标磁盘分区会被挂载为一种文件系统,且一种文件系统会对应生成一个数据块表。该文件系统的读写类型可以为只读或者可读可写,该目标磁盘分区存储的数据的读写类型与该文件系统的读写类型一致。具体的,若该文件系统的读写类型为只读,则该目标磁盘分区存储的数据也为只读数据;若该文件系统的读写类型为可读可写,则该目标磁盘分区存储的数据也为可读可写数据。示例性的,将目标磁盘分区挂载为F2FS文件系统,且将该F2FS文件系统的读写类型设置为可读可写,则该目标磁盘分区也为可读可写分区。

本申请实施例,针对目标磁盘分区为可读可写分区或只读分区的数据块做数据去重处理,换句话说,本申请提供的数据去重方法对于可读可写分区和只读分区都适用。

另外,一种文件系统会对应生成一个数据块表(该数据块表中记录了该文件系统对应的目标磁盘分区中的数据块在该数据块表中的偏移量、以及该数据块对应存储的数据内容之间的关联关系),本申请实施例提供的数据块表即为与文件系统对应的数据块表。本文其他实施例中关于数据块表的涵义与此相同。

可理解的,本申请其他实施例提供的第一数据和第二数据块所存储的第二数据可以为同一文件系统中的同一文件的数据,也可以为同一文件系统中的不同文件的数据。示例性的,该第一数据和该第二数据都为EROFS的a文件中的数据;或者,该第一数据为EROFS的a文件中的数据,该第二数据为EROFS的b文件中的数据。

可理解的,该VFS可以采用标准的unix系统调用读写位于不同物理介质上的不同文件系统,为上述F2FS、EXT4、EROFS以及其他文件系统等各类文件系统提供统一的操作界面和应用编程接口。也就是说,对于各类不同的文件系统,访问底层存储介质的接口不同,也即访问不同文件系统的索引节点指向的数据块的接口不同,而VFS可以为各类文件系统提供统一的操作界面和应用编程接口,使得系统调用无需关心底层的存储介质和文件系统类型就可以工作。

可理解的,该VFS支持的操作系统包括Linux操作系统和Windows操作系统。只是对于不同的操作系统,文件系统层3102所包括的各类文件系统会有所差异,本文对数据块所处的操作系统不做限定。

在一些实施例中,该系统框架图还包括如图3B所示的第一信息表,该第一信息表用于记录目标数据块的checksum。可理解的,该目标数据块是指目标磁盘分区中的任意一个数据块;若该目标数据块已用于存储数据,则该目标数据块的checksum是指该目标数据块的数据内容的checksum;若该目标数据块未用于存储数据,则该目标数据块的checksum的值为初始值(示例性的,该初始值为null或0)(本文关于数据块的checksum的定义均与此相同)。

在另外一些实施例中,该系统框架图还包括如图3C所示的第二信息表,该第二信息表用于记录目标数据块的checksum和该目标数据块对应的被引用次数。可理解的,该目标数据块对应的被引用次数是指第一文件的inode的地址项中记录的该目标数据块的地址信息的次数(本文关于被引用次数的定义均与此相同)。

在另外一些实施例中,上述第一信息表或第二信息表还记录了目标数据块的所属文件号。示例性的,如图3D所示,第二信息表中还包括“所属文件号”的列属性,用于记录目标数据块的所属文件。

为便于描述,下文在对于第一信息表和第二信息表都适用的描述中,将第一信息表和第二信息表统称为目标信息表。

可选的,在该目标信息表中建立该目标数据块与对应的checksum产生关联关系的方式有以下两种:

1、使得该目标信息表与数据块表(该数据块表中记录了目标数据块在数据块表中的偏移量、以及对应的数据内容之间的关联关系)的行记录对应的偏移量相等的方式。该方式包括:

为该目标信息表中的每一列与数据块表中的每一列创建一一对应的关系。具体地,在将目标磁盘分区中的目标数据块分配用于存储数据之前,初始化该数据块表以及初始化该目标信息表。上述初始化数据块表以及初始化目标信息表包括:将数据块表以及目标信息表的偏移值均设置为从0开始自增。示例性的,目标磁盘分区中包括100个数据块,采用第二信息表记录该100个数据块的checksum,则初始化数据块表以及初始化该第二信息表后该数据块表和第二信息表的行记录如图3E所示。其中,该数据块表的第一行数据对应的偏移量为0,第二行数据对应的偏移量为1,第三行数据对应的偏移量为2,以此类推;该目标信息表的第一行数据对应的偏移量为0,第二行数据对应的偏移量为1,第三行数据对应的偏移量为2,以此类推)。

可理解的,要使得该目标信息表中该目标数据块与对应的checksum产生关联关系,则需要将目标信息表的第一目标行用于记录该数据块表中第二目标行对应的目标数据块的checksum相关的信息,且该第一目标行与第二目标行的偏移量相同。示例性的,目标磁盘分区总共包括100个数据块,该数据块表中包括100条数据块的记录。则对应的,该目标信息表也包括100行checksum的记录,该100行checksum的记录与该100条数据块的记录一一对应。也就是说,目标信息表中偏移量为0的行,用于记录该数据块表中偏移量也为0的行对应的目标数据块的checksum相关的信息。

可理解的,在第一信息表中,上述目标数据块的checksum相关的信息包括:目标数据块的checksum;在第二信息表中,上述目标数据块的checksum相关的信息包括:目标数据块的checksum以及该目标数据块的被引用次数;在另外一些实施例中,在第二信息表中,上述目标数据块的checksum相关的信息包括:目标数据块的checksum、该目标数据块的被引用次数以及目标数据块的所属文件号。

2、可选的,该目标信息表中明确记录checksum与对应的目标数据块的地址信息之间的关联关系。具体地,在将目标磁盘分区中的数据块分配用于存储数据之前,初始化该目标信息表时不需创建对应的行记录,在目标磁盘分区中的目标数据块被分配用于存储数据时,再往第二信息表中新增与该目标数据块对应的行记录。

示例性的,在目标磁盘分区中数据块的地址信息为addr3的数据块被分配用于存储字符串为str1的数据内容时,在该目标信息表中新增关于该str1的checksum与该addr3之间的关联关系的行记录。在目标磁盘分区中数据块的地址信息为addr25的数据块被分配用于存储字符串为str2的数据内容时,在该目标信息表中新增关于该str2的checksum与该addr25之间的关联关系的行记录。

请参阅图4A,图4A为本申请实施例提供的一种数据去重方法的流程示意图。如图4A所示,该数据去重方法包括以下步骤:

401,在接收到存储文件A的指令后,根据该文件A的大小创建文件A的索引节点inode。

具体地,在根据该文件A的大小确定索引节点的索引结构后,创建该文件A的inode。

在本申请实施例中,该文件A可以为一份文档、一张图片、一段音频、一段视频或一段音视频等,本申请实施例对此不做限定。

在本申请实施例中,该索引结构包括直接索引块、一级间接索引块、二级间接索引块以及三级间接索引块。可以理解的是,本申请实施例还可以适用其他类型的索引块,本申请实施例对此不做限定。

示例性的,如图2A和图2B所示,记上述新增备忘录数据内容的备忘录记录为文件A,用户点击保存控件301,响应于该第二用户操作,即作用在保存控件301的点击操作,电子设备接收存储文件A的指令,继而启动数据存储。具体的,设电子设备的地址项的结构如图1A所示,且索引块大小和数据块大小均为1k;该电子设备在接收到存储文件A的指令后,根据该数据块大小将文件A包括的数据内容读取到内存中(将文件A中的数据内容按每1k大小逐次读取到内存中)。示例性的,复用图1B,该文件A的数据内容包括s1、s3、s5、s1以及s4,其中,s1-s5的数据内容大小均为1k,则该文件A的大小为5k。由于4k<5k<512k,电子设备根据该文件A的数据内容大小,确定该文件A的inode结构应选择一级间接索引。其中,如图4B所示,其中,采用直接索引块记录s1、s3、s5和s1的地址信息,采用一级间接索引块记录s4的地址信息。

可理解的,该1k数据s1、s3或s5可以为1024个全英文字符,或者,也可以为512个全中文字符等,本文对此不做限定。

402,计算该文件A中第一数据的总和校验码checksum。

可理解的,该第一数据的checksum即为该第一数据的数据内容的checksum。

在本申请实施例中,在存储文件A时,会根据该文件A所处的文件系统中一个数据块的容量大小,依次将文件A中的第一数据读取到内存中,再向目标磁盘分区请求为该内存中的第一数据分配数据块,该数据块用于存储该第一数据的数据内容。

可理解的,该第一数据为内存中未被存储到目标磁盘分区中对应的数据块的数据。示例性的,文件A包括16k的数据,该文件A所处的文件系统中数据块的容量为4k,则分四次将文件A中的数据读取到内存,若已将第一个4k数据和第二个4k数据存储到目标磁盘分区的相应数据块中,而内存中的第三个4k数据和第四个4k数据还未被分配数据块。则该第一数据为该第三个4k数据。对应的,该第一数据的checksum为该第三个4k数据的数据内容的checksum。在该第三个4k数据被存储到目标磁盘分区相应的数据块后,则该第一数据则为内存中还未被存储到数据块中的该第四个4k数据。

403,根据第二信息表确定是否存在第二数据块,该第二数据块的checksum与该第一数据的checksum相同。该第二信息表用于记录该第二数据块的checksum。

可理解的,该第一数据的checksum是指该第一数据的数据内容的checksum。

可理解的,该第二数据块为存储了第二数据的数据块,该第二数据的数据内容即为该第二数据块的数据内容。

可理解的,该第二数据块中存储的该第二数据可以为该文件A中的数据内容,也可以为其他文件(示例性的,为文件B、文件C或文件D)中的数据内容。该第二数据块可以为目标磁盘分区中存储的任意一个目标数据块(该目标数据块的checksum与该第一数据的checksum相同),该目标数据块可以为存储了属于文件A的数据的数据块,也可以为存储了属于其他文件(例如文件B)的数据的数据块。在这种情况下,本申请实施例提供的数据去重方法为基于目标磁盘分区中同一文件和不同文件的数据去重。可理解的,在这种情况下,采用第二信息表记录第二数据块与第二数据块的checksum之间的关联关系,复用图2C,该第二信息表不需要记录该第二数据块的所属文件号。

示例性的,文件A包括16k的数据,该文件A所处的文件系统中数据块的容量为4k,则分四次将文件A中的数据读取到内存,若已将第一个4k数据和第二个4k数据存储到目标磁盘分区的相应数据块中,而内存中的第三个4k数据和第四个4k数据还未被分配数据块。则该第二数据块为目标磁盘分区中存储了第一个4k数据(第二数据)的数据块,或者,该第二数据块为目标磁盘分区中存储了第二个4k数据(第二数据)的数据块,或者,该第二数据块为目标磁盘分区中存储的其他文件(例如文件B)的目标数据的数据块。对应的,该第二数据块的checksum为第一个4k数据的数据内容的checksum,或者,该第二数据块的checksum为第二个4k数据的数据内容的checksum,或者,该第二数据块的checksum为该目标数据的数据内容的checksum。

可选的,该第二数据块也可以约束为目标磁盘分区中存储了属于文件A的第二数据的数据块。在这种情况下,本申请提供的数据去重方法为基于同一文件的数据去重。可理解的,在这种情况下,采用第二信息表记录第二数据块与第二数据块的checksum之间的关联关系,复用图2D,该第二信息表中需要记录该第二数据块的所属文件号。

示例性的,文件A包括16k的数据,该文件A所处的文件系统中数据块的容量为4k,则分四次将文件A中的数据读取到内存,若已将第一个4k数据和第二个4k数据存储到目标磁盘分区的相应数据块中,而内存中的第三个4k数据和第四个4k数据还未被分配数据块。则该第二数据块为目标磁盘分区中存储了该第一个4k数据的数据块,或者,该第二数据块为目标磁盘分区中存储了该第二个4k数据的数据块。

在本申请实施例中,通过设置循环长度以及根据该第二信息表查找是否存在该第二数据块(关于第二信息表的详细描述请参照上文)。示例性的,该循环长度为该第二信息表的总记录数,循环起点为0(相当于基地址为0),循环增量为1。具体的,若第二信息表中的总记录数有20条,则对应的循环语句为:for(i=0;i<20;i+1),该i的值与第二信息表中的第(i+1)条记录的偏移量相等。根据该第二信息表查找是否存在该第二数据块包括:在第二信息表中查找与目标偏移量(该目标偏移量的值为i)对应的目标checksum;判断该目标checksum与第一数据的checksum是否相同;在确定该目标checksum与第一数据的checksum相同的情况下,确定与该目标checksum对应的数据块为该第二数据块。

可选的,在获取到目标checksum后,判断该目标checksum与第一数据的checksum是否相同之前,先判断该目标checksum是否为初始值,若该checksum为初始值,则说明该checksum对应的数据块未被用于存储数据内容。此时不需再执行判断该目标checksum与第一数据的checksum是否相同,而是将i的值加1,继续循环获取下一个目标checksum。

可选的,该循环起点也可以为其他参考值。示例性的,该循环起点为2(相当于基地址为2),则对应的循环语句为:for(i=2;i<22;i+1),相应的该i的值减2(该i的值减2相当于偏移量)与第二信息表中的第(i-1)条记录的偏移量相等。

404,在确定存在该第二数据块的情况下,确定该第二数据块的数据内容与该第一数据的数据内容是否相同。

可选的,该第二数据块的数据内容的获取方式可以为,在该第二信息表中使得第二数据块与对应的checksum产生关联关系所采用的方式为,该第二信息表与数据块表的行记录对应的偏移量相等的情况下,与上述目标checksum对应的数据块(也即第二数据块)即为数据块表中与上述目标偏移量对应的数据块。该第二数据块的数据内容即为数据块表中与该目标偏移量对应的数据块的数据内容。

可选的,该第二数据块的数据内容的获取方式还可以为,在该第二信息表中使得第二数据块与对应的checksum产生关联关系所采用的方式为,该第二信息表中明确记录checksum与对应的第二数据块的地址信息之间的关联关系的情况下,该第二数据块的地址信息即为第二信息表中与该目标偏移量对应的数据块的地址信息。而该第二数据块的数据内容即为数据块表中与该第二数据块的地址信息对应的数据块的数据内容。

可理解的,本申请实施例可以为针对一种可读可写文件系统的数据去重,也可以为针对一种只读文件系统的数据去重。示例性的,该文件A所处的文件系统为可读可写文件系统,该数据块表为与该可读可写文件系统对应的数据块表,该数据块表中记录了与该可读可写文件系统对应的目标磁盘分区中包括的数据块的信息。或者,该文件A所处的文件系统为只读文件系统,该数据块表为与该只读文件系统对应的数据块表,该数据块表中记录了与该只读文件系统对应的目标磁盘分区中包括的数据块的信息。

可选的,确定该第二数据块的数据内容与该第一数据的数据内容是否相同可以采用compare函数。具体的,记第一数据的数据内容为为str1,第二数据块的数据内容为str2,通过str1.compare(str2)或者str2.compare(str1)调用compare函数,得到compare的返回值,当该返回值为0的情况下,该str1和str2相同;若该返回值不为0,则该str1和str2不相同。

可选的,确定该第二数据块的数据内容与该第一数据的数据内容是否相同还可以采用equals方法。具体的,记第一数据的数据内容为为str1,第二数据块的数据内容为str2,通过str1.equals(str2)或者str2.equals(str1)调用equals方法,得到该equals方法的返回值,在该返回值为true的情况下,该str1和str2相同;在该返回值为false的情况下,该str1和str2不相同。

可选的,确定该第二数据块的数据内容与该第一数据的数据内容是否相同还可以采用,为该第一数据的数据内容和该第二数据块的数据内容计算独特的标识符的方法。可理解的,散列算法或指纹算法可用于为数据内容计算独特的标识符。具体的,采用散列算法或指纹算法为该第一数据的数据内容计算第一标识符和为该第二数据块的数据内容计算第二标识符,在该第一标识符与该第二标识符相同的情况下,该第一数据的数据内容与该第二数据块的数据内容相同。

可理解的,确定该第二数据块的数据内容与该第一数据的数据内容是否相同可以采用compare函数、采用equals方法或采用计算独特的标识符的方法仅为示例,本文对于如何判断该第二数据块的数据内容与该第一数据的数据内容是否相同所使用的判断方法不做限定。

405,该第二信息表还用于记录该第二数据块的被引用次数;在确定该第二数据块的数据内容与该第一数据的数据内容相同的情况下,确定第二信息表中该第二数据块的被引用次数是否小于第一阈值。

示例性的,该第一阈值的取值可以为(≥500且≤5000)中的任意一个数值。可理解的,该第一阈值的取值仅为示例,本文对第一阈值的取值不做限定。

可理解的,该第二数据块的被引用次数也可以称为本文其他实施例所描述的第一被引用次数。

可理解的,可以先执行上述步骤404,在确定该第二数据块的数据内容与该第一数据的数据内容相同的情况下,再执行上述步骤405;或者,也可以先执行步骤405,在确定第二信息表中该第二数据块的被引用次数小于第一阈值的情况下,再执行上述步骤404。本文对步骤404和步骤405的执行顺序不做限定。

在本申请实施例中,该第一阈值为数据去重上限。可理解的,一方面,若不设置去重上限,第二数据对应的目标数据块的被引用次数会逐渐增大,导致目标数据块的被访问的频率也逐渐增多,而长期反复地读取目标磁盘分区中同一个目标数据块的数据,会加速存储该目标数据块的存储介质(目标磁盘分区)的损坏,缩短存储介质的使用寿命。因此,设置去重上限,可以避免目标数据块被频繁访问而导致的加速存储介质损坏速度的问题。另一方面,目标数据块被引用次数越多,重复度越高,会为目标直接索引表的索引带来一定的困难,以及,导致修改操作的速度变慢,降低修改操作的效率。因此,设置去重上限,可以避免重复度过高带来的索引困难和重复度过高带来的降低修改操作的效率等问题。

406,在确定该第二数据块的被引用次数小于第一阈值的情况下,将该第二数据块地址信息作为该第一数据的数据块地址信息存储到文件A的inode的地址项中;并将第二信息表对应的该第二数据块的被引用次数加1。

可理解的,在确定存在与第一数据的checksum相同的第二数据块,且该第二数据块的数据内容与该第一数据的数据内容相同,以及该第二数据对应的数据块的被引用次数小于第一阈值的情况下,则不再继续执行步骤404中的循坏语句。也就是说,当在目标磁盘分区中查找到与该第一数据的数据内容重复的第二数据块且该第二数据块未达到去重上限的情况下,停止查找第二信息表是否存在下一个第二数据块(该下一个第二数据块的checksum与该第一数据的checksum相同)。

407,在根据该第二信息表确定不存在第二数据块,该第二数据块的checksum与该第一数据的checksum相同;或者,在根据该第二信息表确定不存在第二数据块,该第二数据块的checksum与该第一数据的checksum相同且该第二数据块的数据内容与该一数据的数据内容相同;或者,在根据该第二信息表确定不存在第二数据块,该第二数据块的checksum与该第一数据的checksum相同,且该第二数据块的数据内容与该一数据的数据内容相同,以及该第二数据块对应的被引用次数小于第一阈值的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的checksum和记录该参考数据块的被引用次数为1。

示例性的,根据该第二信息表确定存在0个第二数据块(该第二数据块的checksum与该第一数据的checksum相同)的情况下,将第一数据存储到参考数据块中(即为该第一数据分配新的数据块,该新的数据块记为参考数据块,该参考数据块用于存储该第一数据),以及在第二信息表中记录该参考数据块对应的checksum和记录该参考数据块的被引用次数为1。

示例性的,根据该第二信息表中确定存在m(m为大于0的正整数)个第二数据块(该m个第二数据块的checksum与该第一数据的checksum相同,但该m个第二数据块的数据内容均与该第一数据的数据内容不相同)的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的checksum和记录该参考数据块的被引用次数为1。

在本申请实施例中,在根据该第二信息表确定第二数据块(该第二数据块的checksum与该第一数据的checksum相同,且该第二数据块的数据内容与该第一数据的数据内容相同)的被引用次数大于或等于第一阈值的情况下,继续执行步骤404,循环语句中的i加1,并继续执行步骤405、步骤406以及步骤407,继续查找该第二信息表中是否存在另外一个第二数据块,该另外一个第二数据块的checksum与该第一数据的checksum相同且该第二数据块对应的被引用次数小于第一阈值,直到循环语句中的i得到最大值仍然找不到该另外一个第二数据块的情况下,则确定不存在第二数据块(该第二数据块的checksum与该第一数据的checksum相同,且该第二数据块的数据内容与该一数据的数据内容相同,以及该第二数据块对应的被引用次数小于第一阈值)。

示例性的,根据该第二信息表确定存在3个第二数据块(该3个第二数据块的checksum均与该第一数据的checksum相同,且该3个第二数据块的数据内容均与该第一数据的数据内容相同,但该第二数据块对应的被引用次数均大于或等于第一阈值)的情况下,将第一数据存储到参考数据块中,以及在第二信息表中记录该参考数据块对应的checksum和记录该参考数据块的被引用次数为1。

示例性的,该第二信息表中存在2个第二数据块(该2个第二数据块中的一个第二数据块的checksum与该第一数据的checksum相同,且该第二数据块的数据内容均与该第一数据的数据内容相同,但该第二数据块对应的被引用次数大于或等于第一阈值;该2个第二数据块中的另外一个第二数据的数据内容的checksum与该第一数据的checksum相同,且该另外一个第二数据块的数据内容均与该第一数据的数据内容相同,以及该另外一个第二数据块对应的被引用次数小于第一阈值)的情况下,若先查找该2个第二数据块中被引用次数大于或等于第一阈值的第二数据块,则仍会继续循环执行步骤405、步骤406以及步骤407,直到查找到该2个第二数据块中的该另外一个第二数据块。若先查找到该2个第二数据块中的该另外一个第二数据块,则不需再循环执行步骤405、步骤406以及步骤407。

可理解的,在一些实施例中,第二信息表中记录该第二数据块的所述文件号,将本申请实施例的数据去重方法约束为基于同一文件的数据去重的情况下,则在执行完上述步骤403确定存在该第二数据块之后以及步骤406之前,该数据去重方法还包括:

根据该第二信息表确定该第二数据块所属文件是否为文件A;若是,进一步判断该第一数据与该第二数据块是否满足数据去重条件;若否,则确定该第一数据与该第二数据块不满足数据去重条件。可理解的,上述进一步判断该第一数据与该第二数据块是否满足数据去重条件通过继续执行上述步骤404-步骤407得到;在上述确定该第一数据与该第二数据块不满足数据去重条件之后,执行上述步骤407以存储该第一数据。

在本申请实施例中,先通过总和校验码checksum判断第一数据的数据内容和第二数据块的数据内容是否可能相同;在第一数据的数据内容和第二数据块的数据内容可能相同的情况下,再进一步确认第一数据的数据内容与第二数据块的数据内容是否相同;最后检查该第二数据对应的数据块的被引用次数是否大于去重上限,在达到数据去重效果提高了存储空间利用率的同时,减少由于数据内容之间的比较所带来的性能消耗,以及避免第二数据块被频繁访问而导致的加速存储介质损坏速度的问题。

图4A-图4B中的实施例描述了存储文件A的数据去重方法,下面针对修改文件A中的第三数据的数据去重方法展开详细描述。

请参阅图5,图5为本申请提供的修改第三数据的数据去重方法的流程示意图。如图5所示,该方法包括以下步骤:

501,在接收到将文件A中的第三数据修改为第四数据的指令后,获取第二信息表中该第三数据对应的数据块的被引用次数,并确定该被引用次数是否等于1。

可理解的,该第三数据对应的数据块的被引用次数也可以称为本申请其他实施例所描述的第二被引用次数。

在本申请实施例中,该指令包括该第三数据的数据内容在该文件A中的目标起始字节和目标结束字节,根据该第三数据的目标起始字节和目标结束字节所占用的逻辑块号以及该文件A的inode的地址项查找与该第三数据对应的数据块的地址信息。为便于描述,记与该第三数据的对应的数据块为第三数据块,与该第三数据对应的数据块的地址信息记为第三数据块的地址信息。

关于如何根据该第三数据的目标起始字节和目标结束字节所占用的逻辑块号以及该文件A的inode的地址项查找与该第三数据对应的数据块的地址信息,请参照本文其他实施例。

示例性的,如图2E所示,将上述“会议记录8”所对应的备忘录记录记为文件A,用户点击保存控件401,响应于该第三用户操作,即作用在保存控件401的点击操作,电子设备接收将“会议记录8”修改为“会议记录8(重要会议)”的指令,启动数据更新存储。则该第三数据的数据内容为该“会议记录8”,该第四数据的数据内容为该“会议记录8(重要会议)”。具体的,设电子设备的地址项结构如图2A所示,且索引块大小和数据块大小均为1k;该电子设备接收将“会议记录8”修改为“会议记录8(重要会议)”的指令,该指令包括了该“会议记录8”在该文件A中的目标起始字节为0字节处和目标结束字节为9字节处的信息,根据该目标起始字节和目标结束字节可以确定该“会议记录8”所占用的逻辑块号为该文件A的inode中的第一个逻辑块号,根据该逻辑块号即能查找到与该“会议记录8”对应的数据块的地址信息。

可选的,获取该被引用次数可以为,在该第二信息表中使得目标数据块与对应的checksum产生关联关系所采用的方式为,该第二信息表与数据块表的行记录对应的偏移量相等的情况下,根据该第三数据块的地址信息得到该第三数据块在数据块表中的偏移量(该第三数据的地址信息即为该偏移量),再根据该偏移量获取第二信息表中与该偏移量对应的行记录中记录的该被引用次数。

可选的,查找第二信息表中该被引用次数还可以为,在该第二信息表中使得目标数据块与对应的checksum产生关联关系所采用的方式为,该第二信息表中明确记录checksum与对应的目标数据块的地址信息之间的关联关系的情况下,获取第二信息表中与该第三数据块的地址信息对应的该被引用次数。

可理解的,该第三数据和第四数据为文件系统数据处理的最小单元。具体的,该第三数据的数据内容为该第三数据块的数据内容,该第四数据的数据内容为该第三数据块修改后的数据内容。可理解的,将第三数据修改为第四数据的涵义为,将该第三数据块的数据内容修改为该第四数据的数据内容。

具体地,该第三数据的数据内容为str1,该第三数据块的数据内容也为str1,该第四数据的数据内容为str2,则将第三数据修改为第四数据的涵义为将第三数据块的数据内容“str1”修改为“str2”。示例性的,该str1为“adcddddabc”,该str2为“adceeeeabc”,将第三数据修改为第四数据的涵义即为将“adcddddabc”修改为“adceeeeabc”。可理解的,该第三数据包括需要修改的数据内容,该需要修改的数据内容为第三数据的数据内容中的部分数据内容或全部数据内容。例如,上述str5中需要修改的数据内容“dddd”即为第三数据的数据内容中需要修改的部分数据内容。

502,在确定该被引用次数等于1的情况下,将第四数据存储到该文件A中,并删除与该第三数据相关的信息。

可理解的,上述将第四数据存储到该文件A中包括:将第四数据作为上述步骤402中的第一数据,并执行步骤402至步骤407。(本文关于“将第四数据存储到该文件A中”的涵义均与此相同)

可理解的,该第三数据对应的数据块的被引用次数等于1,则说明该第三数据对应的数据块只被该第三数据引用,则在修改第三数据时可以直接对第三数据进行修改或删除等操作,不会对文件A的其他数据造成影响。

可理解的,将第四数据作为步骤402中的第一数据并执行步骤402至步骤407,可以判断该文件A中是否已经存储有第二数据块(该第二数据块的checksum与该第四数据的checksum相同,且该第二数据块的数据内容与该第四数据的数据内容也相同,以及该第二数据块对应的被引用次数小于第一阈值)

可理解的,若存在该第二数据块,则将该第二数据块的地址信息作为该第四数据的数据块地址信息;若不存在该第二数据块,则为该第四数据分配新的数据块,该第四数据的数据块地址信息为该新的数据块的地址信息。

可选的,上述删除与该第三数据相关的信息可以为,将文件A的inode的地址项中记录的该逻辑块号对应的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息;将第三数据对应的数据块删除;以及,将第二信息表中与该第三数据相关的记录删除。

可选的,上述删除与该第三数据相关的信息还可以为,将文件A的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除(该数据块信息包括第三数据在该文件A的inode的地址项中对应的逻辑块号与该第三数据对应的数据块的地址信息的关联关系)(下文关于“将文件A的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除”的涵义均与此相同);在该文件A的inode的地址项中最后一个用于记录数据内容的数据块地址信息的地址项的下一个地址项,记录该逻辑块号和该第四数据的数据块地址信息的关联关系;将第三数据对应的数据块删除;以及,将第二信息表中与第三数据相关的记录删除。

可选的,上述将第三数据对应的数据块删除可以为,将该第三数据对应的数据块置为不可用;具体的,将第三数据的数据块置为d i rty(文件A所在的文件系统会定期将置为d i rty的数据块的内容清空后重置为可使用)。可选的,上述将第三数据对应的数据块删除还可以为,将第三数据对应的数据块的数据内容清空(具体包括将数据块表中记录的该第三数据的数据块的数据内容置为nu l l),以及将位示图(bitmap)中对应记录该第三数据的数据块的使用情况的bit位置为0;上述bitmap用bit位记录与该bit位对应的数据块的使用情况,具体的,该bit位为1则表明该数据块被分配用于存储数据,若该bit位为0,则表明该数据块未被分配用于存储数据。

可选的,若不存在该第二数据块,上述删除与该第三数据相关的信息还可以为,将第三数据的数据块内容替换(修改)为该第四数据的数据内容,以及将第二信息表中该第三数据对应的checksum替换(修改)为该第四数据对应的checksum。

示例性的,在上述将“会议记录8”修改为“会议记录8(重要会议)”中,该第三数据为“会议记录8”,该第四数据为“会议记录8(重要会议)”。则需要判断“会议记录8”所对应的数据块的被引用次数是否等于1,若是,则表明该“会议记录8”对应的数据块只被该“会议记录8”引用,可以直接对该“会议记录8”进行修改和删除等操作。且在将“会议记录8”修改为“会议记录8(重要会议)”,存储该“会议记录8(重要会议)”时,需进一步判断在目标磁盘分区中是否已有数据块存储了该“会议记录8(重要会议)”且满足去重条件,若是,则将该数据块的地址信息作为该第四数据的地址信息。

503,在确定该被引用次数不等于1的情况下,确定该被引用次数是否大于1。

504,在确定该引用次数大于1的情况下,将第二信息表中与该第三数据对应的数据块的被引用次数减1,并将第四数据存储到文件A中。

可选的,将第四数据存储到文件A中可以为,将文件A的inode的地址项中记录的该逻辑块号对应的该第三数据的数据块的地址信息替换(修改)为该第四数据的数据块的地址信息。

可选的,将第四数据存储到文件A中还可以为,将文件A的inode的地址项中记录的该逻辑块号对应的该第三数据对应的数据块信息删除,并在该文件A的inode的地址项中最后一个用于记录数据内容的数据块的地址信息的地址项的下一个地址项,记录该逻辑块号和该第四数据的数据块的地址信息的关联关系。

可理解的,该引用次数大于1则表示第三数据在多处被引用。示例性的,该第一数据的数据块的地址信息和该第三数据的数据块的地址信息一致,而在目标磁盘分区中只存储了一份数据,该第一数据和该第三数据共用一个数据块的同一份数据。则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接修改该第三数据,而是应该为该第四数据重新申请一个新的数据块,或者,查找是否存在第二数据(该第二数据块的checksum与该第四数据的checksum相同,且该第二数据块的数据内容与该第四数据的数据内容也相同,以及该第二数据块对应的被引用次数小于第一阈值),将该第二数据块的地址信息作为该第四数据的数据块的地址信息。

示例性的,在上述将“会议记录8”(第三数据)修改为“会议记录8(重要会议)”(第四数据)中,需要判断“会议记录8”所对应的数据块的被引用次数是否大于1,若是,则表明该“会议记录8”对应的数据块除了被该“会议记录8”引用之外,还被别的数据引用(例如,该数据块除了被该“会议记录8”引用之外,还被第一数据引用),则为了保证在修改第三数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接修改该第三数据。

可理解的,本申请实施例为针对一种可读可写文件系统的数据去重,对于只读文件系统的而言,由于只读文件系统存在只读权限控制,不允许对文件数据内容进行修改,故本申请图5所示的数据去重方法不适用于只读文件系统,或者说是不适用于目标磁盘分区中的只读分区。

在本申请实施例中,对修改后的第四数据进行数据去重判断,查看目标磁盘分区中是否已经存储有该第二数据,使得文件A的在所有需要存储数据的场景下(包括图4A所示的新建流程和图5所示的修改流程)都进行数据去重,提高存储空间利用率。

图4A-图4B中实施例描述了存储文件A的数据去重方法,图5中的实施例描述了针对修改文件A中的第三数据的数据去重方法,以下对删除文件A中的第五数据的数据去重方法展开详细描述。

请参阅图6,图6为本申请提供的一种删除第五数据的数据去重方法的流程示意图。如图6所示,该方法包括以下步骤:

601,在接收到删除文件A中的第五数据的指令后,获取第二信息表中该第五数据对应的数据块的被引用次数,并确定该被引用次数是否等于1。

可理解的,该第五数据对应的数据块的被引用次数也可以称为本申请其他实施例所描述的第三被引用次数。

在本申请实施例中,该指令包括该第五数据的数据内容在该文件A中的目标起始字节和目标结束字节,根据该目标起始字节和目标结束字节所占用的逻辑块号以及目标索引表查找与该第五数据对应的数据块的地址信息。为便于描述,记与该第五数据的对应的数据块为第五数据块。

可理解的,查找第二信息表中该第五数据块的被引用次数的查找方法与上文步骤401查找第二信息表中第三数据块的被引用次数的查找方法相同,在此不再详述。

示例性的,如图2F和图2G所示,将上述“会议记录3”所对应的备忘录记录记为文件A,用户删除文件A中的数据内容“会议记录3”并点击了保存控件501后,电子设备接收删除“会议记录3”(第五数据)的指令。

602,在确定该被引用次数等于1的情况下,删除与该第五数据相关的信息。

上述删除与该第五数据相关的信息包括:将该第五数据对应的第五数据块删除,将文件A的inode的地址项中记录的该逻辑块号对应的该第五数据对应的数据块信息删除,以及,将第二信息表中与该第五数据对应的记录删除。可理解的,上述将该第五数据对应的第五数据块删除与上述将第三数据对应的数据块删除的删除方法一致,这里不再详述。

可理解的,该第五数据对应的数据块的被引用次数等于1,则说明该第五数据对应的数据块只被该第五数据引用,则在删除第五数据时可以直接对第五数据进行删除等操作,且不会对文件A的其他数据的使用造成影响。

示例性的,上述删除“会议记录3”(第五数据)中,需要判断该第五数据所对应的数据块的被引用次数是否等于1,若是,则表明该第五数据对应的数据块只被该第五数据引用,可以直接对该第五数据进行删除操作。

603,在确定该被引用次数不等于1的情况下,确定该被引用次数是否大于1。

604,在确定该被引用次数大于1的情况下,将文件A的inode的地址项中记录的该逻辑块号对应的该第五数据对应的数据块信息删除,并将该第五数据块对应的被引用次数减1。

可理解的,该第五数据对应的数据块信息包括第五数据在该文件A的inode的地址项中对应的逻辑块号与该第五数据对应的数据块的地址信息的关联关系。

可理解的,该第五数据的数据内容包括该第五数据块中的全部数据内容,而对于该第五数据的数据内容包括第五数据块中的部分数据内容的情况,属于图5所示的修改第三数据的情况。

示例性的,上述删除“会议记录3”(第五数据)中,需要判断该第五数据所对应的数据块的被引用次数是否大于1,若是(例如,该备忘录中存储有两份数据内容皆为“会议记录3”的文件),则表明该第五数据对应的数据块除了被该第五数据引用之外,还被其他数据引用(例如,该第一数据和该第五数据共用一个数据块)。则为了保证在删除第五数据的同时该第一数据的数据块的地址信息的使用不会出错,则不能直接删除该第五数据对应的数据块。

可理解的,本申请实施例为针对一种可读可写文件系统的数据去重,对于只读文件系统的而言,由于只读文件系统存在只读权限控制,不允许对文件数据内容做删除操作,故本申请图6所示的数据去重方法不适用于只读文件系统,或者说是不适用于目标磁盘分区中的只读分区。

在本申请实施例中,在第五数据被多处引用时,为保证除了第五数据以外的其他引用了该第五数据对应的目标数据块的数据的使用不受影响,在需要删除该第五数据的情况下,保留该第五数据对应的数据块,删除目标直接索引表中该第五数据对应的逻辑块号的数据块的地址信息的记录,保证了去重机制下文件系统的数据完整性。

可理解的,本申请还可以提供数据去重功能权限控制,用户可选择开启设备的数据去重功能权限或关闭数据去重功能权限,默认情况下,设备开启该数据去重功能权限。在设备的数据去重功能权限为开启状态下,设备执行本申请提供的数据去重方法。

请参阅图7,本申请还提供另外一种数据去重方法。如图7所示,该数据去重方法包括以下步骤:

701,在接收到存储文件A的指令后,创建该文件A的索引,该索引用于记录数据和存储数据的数据块之间的关联关系;

可选的,创建文件A的索引可以为根据该文件A的大小创建文件A的索引节点inode,具体如何根据该文件A的大小创建文件A的inode请参照本申请其他实施例的描述。

可选的,创建文件A的索引还可以为创建文件A的目标索引结构,该目标索引结构为除了inode之外的其他索引结构。示例性的,该目标索引结构可以为哈希索引、b+树索引等,本申请实施例对此不做限定。

702,计算该文件A中第一数据的特征标识。

可选的,该特征标识可以为第一特征标识,当两个数据的第一特征标识不一致的情况下,这两个数据的数据内容一定不相同;当两个数据的第一特征标识一致的情况下,这两个数据的数据内容可能相同。示例性的,该第一特别标识可以为总和校验码checksum。关于总和校验码checksum的定义及其计算方式请参照上文相关描述。

可选的,该特征标识可以为第二特征标识,该第二特征标识可以唯一标识一个数据。也就是说,当两个数据的第二特征标识一致的情况下,这两个数据的数据内容相同;当两个数据的第二特征标识不一致的情况下,这两个数据的数据内容不相同。示例性的,该第二特征标识可以通过散列算法或指纹算法等算法计算得到,也可以通过比该散列算法或指纹算法等计算量小、性能损耗小的其他算法计算得到。

关于第一数据的详细描述请参照本申请其他实施例。

703,确定目标存储空间是否存在第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同。

可选的,不考虑上文所述的数据去重上限的情况下,确定目标存储空间是否存在该第二数据块具体可以为:根据第一信息表确定目标存储空间是否存在该第二数据块,该第二数据块的特征标识与该第一数据的特征标识相同。具体的,通过设置循环长度以及根据该第一信息表查找是否存在该第二数据块。关于具体如何设置循环长度以及根据该第一信息表查找是否存在该第二数据块的方法与上文步骤403中通过设置循环长度以及根据该第二信息表查找是否存在第二数据块(第二数据块的checksum与第一数据的checksum相同)的查找方式类似,在此不再详述。

可选的,考虑上述数据去重上限的情况下,确定目标存储空间是否存在该第二数据块具体还可以为:根据重复计数表确定目标存储空间是否存在该第二数据块。可理解的,该重复计数表可以为如图3C所示的第二信息表或如图3D所示的第二信息表,关于第二信息表的描述请参照本申请其他实施例。

关于目标存储空间的描述请参照本申请其他实施例。

704,在确定存在该第二数据块的情况下,将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到索引中。

可选的,在该第一数据的特征标识为上述第一特征标识的情况下,在确定存在该第二数据块(该第二数据块的第一特征标识与该第一数据的第一特征标识相同)后,还需要进一步判断该第二数据块的数据内容与该第一数据的数据内容是否相同。关于如何判断该第二数据块的数据内容与该第一数据的数据内容是否相同请参照本申请其他实施例(例如,如图4A所示的步骤404)。

可选的,在将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到索引中之前,该方法还包括:确定该第二数据块是否满足数据去重上限;具体的,根据重复计数表确定该第二数据块的被引用次数是否小于第一阈值。上述在确定存在该第二数据块的情况下,将该第二数据块的地址信息作为该第一数据的数据块的地址信息存储到索引中包括:在确定存在该第二数据块,且该第二数据块的被引用次数小于第一阈值的情况下,将该第二数据块的地址信息作为该第一数据的数据块地址信息存储到索引中。可理解的,上述步骤703确定目标存储空间中是否存在第二数据块与上述确定该第二数据块是否满足数据去重上限两个步骤可以一起执行,或者先后执行,其先后顺序不做限定。

关于第二数据块的被引用次数、第一阈值以及数据块的地址信息等描述请参照本申请其他实施例。

可理解的,本申请实施例还可以结合如图5所示的数据去重方法;示例性的,将图5中502步骤的第四数据作为上述步骤702中的第一数据,也即将执行图5所示的501至504的方法步骤后得到的该修改后的第四数据作为该图7所示的方法中的该第一数据,以判断该如何存储该第四数据(判断该如何存储该第四数据具体可通过执行步骤701至步骤704实现)。

可理解的,本申请实施例也可以结合如图6所示的数据去重方法;示例性的,如图6步骤601中的第五数据为图7所示的数据去重方法中文件A中的数据内容,本申请实施例除了提供如图7所示的数据去重方法以外,也可以包括该图6所示的数据去重方法。

可理解的,本申请以上实施例提供的方法可以由任意采用目标磁盘分区中的数据块进行数据存储的电子设备执行。示例性的,该电子设备包括移动终端、平板电脑、桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本,以及蜂窝电话等。

示例性的,请参阅图8,图8为本申请实施例提供的电子设备100的结构示意图,下面通过移动终端作为该电子设备的一个示例进行详细的描述。

电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。

可以理解的是,本发明实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(applicationprocessor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。

其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。

处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。

在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industryprocessor interface,MIPI),通用输入输出(general-purpose input/output,GPIO)接口,用户标识模块(subscriber identitymodule,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。

I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。

I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。

PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。

UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。

MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(displayserial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。

GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。

USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。

可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。

充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。

电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。

电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。

天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。

移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。

调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。

无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。

在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(codedivision multiple access,CDMA),宽带码分多址(wideband code division multipleaccess,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidounavigation satellite system,BDS),准天顶卫星系统(quasi-zenith satellitesystem,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。

电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。

显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。

电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。

ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。

摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。

数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。

视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(movingpicture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。

NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。通过NPU还可以实现本申请实施例提供的决策模型。

外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。

内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。

电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。

音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。

扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。

受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。

麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。

耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association ofthe USA,CTIA)标准接口。

压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A

的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。

陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。

气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。

磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。

加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。

距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。

接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。

环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。

指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。

温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。

触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。

骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。

按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。

马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。

指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。

SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。

上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:ROM或随机存储记忆体RAM、磁碟或者光盘等各种可存储程序代码的介质。

57页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于存储设备的写、读数据方法、存储控制器以及DMA引擎

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类