一种ip硬盘及其数据处理方法
【专利摘要】本发明实施例提供了一种网络互连协议IP硬盘及其数据处理方法,所述IP硬盘中预设有第一布隆过滤器;该方法包括:所述IP硬盘获得第一数值Value;所述IP硬盘获得所述第一Value对应的第一哈希值;所述IP硬盘判断所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值是否为1;若所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为1,所述IP硬盘判断所述第一Value是否为重复数据;若所述第一Value为重复数据,所述IP硬盘对所述第一Value执行重复数据的删除操作。根据本发明实施例提供的技术方案,IP硬盘可以实现主动删除重复数据,节省存储空间。
【专利说明】一种IP硬盘及其数据处理方法 【【技术领域】】
[0001] 本发明涉及存储【技术领域】,尤其涉及一种IP硬盘及其数据处理方法。 【【背景技术】】
[0002] 目前,有一种基于键-值(Key-Value)的硬盘,如网络互连协议(Internet Protocol, IP)硬盘,与传统硬盘通过小型计算机系统接口(Small Computer System Interface,SCSI)与主机进行通信的方式不同,这种硬盘采用以太网口与外部设备进行通 信,而且这种硬盘是一种自包含硬盘,可以没有主机对其进行控制,可以自发完成数据的读 /写操作,而传统硬盘必须连接到主机并在主机的控制下进行相应的读写操作。
[0003] 目前,IP硬盘没有删除重复数据的功能,导致IP硬盘中会存储重复的数据,浪费 IP硬盘的存储空间。 【
【发明内容】
】
[0004] 有鉴于此,本发明实施例提供了一种IP硬盘及其数据处理方法,IP硬盘可以实现 主动删除重复数据,节省存储空间。
[0005] 第一方面,本发明实施例提供了一种IP硬盘的数据处理方法,所述IP硬盘中预设 有第一布隆过滤器;包括:
[0006] 所述IP硬盘获得第一数值Value ;
[0007] 所述IP硬盘获得所述第一 Value对应的第一哈希值;
[0008] 所述IP硬盘判断所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数 值是否为1 ;
[0009] 若所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为1,所述IP 硬盘判断所述第一 Value是否为重复数据;
[0010] 若所述第一 Value为重复数据,所述IP硬盘对所述第一 Value执行重复数据的删 除操作。
[0011] 在第一方面的第一种可能的实现方式中,所述IP硬盘获得第一 Value,包括:
[0012] 所述IP硬盘依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者,
[0013] 所述IP硬盘依据客户端通过以太网口发送的Value,获得所述第一 Value。
[0014] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的 实现方式中,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二Value,P 为大于或者等于1的整数,所述IP硬盘判断所述第一 Value是否为重复数据,包括:
[0015] 所述IP硬盘获得所述第一 Value对应的第一指纹和每个所述第二Value对应的 第二指纹;
[0016] 所述IP硬盘利用与所述第二布隆过滤器对应的哈希算法,获得所述第一指纹对 应的第二哈希值和每个所述第二指纹对应的第三哈希值,所述第二布隆过滤器的二进制位 的数目大于所述第一布隆过滤器的二进制位的数目;
[0017] 所述IP硬盘将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数 值置为1,以获得第三布隆过滤器;
[0018] 所述IP硬盘获得所述第三布隆过滤器中所述第二哈希值对应的二进制位,若 所述第三布隆过滤器中所述第二哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数据。
[0019] 结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第三种可能的 实现方式中,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二Value,P 为大于或者等于1的整数,所述IP硬盘判断所述第一 Value是否为重复数据,包括:
[0020] 所述IP硬盘获得所述第一 Value对应的第三指纹和每个所述第二Value对应的 第四指纹;
[0021] 所述IP硬盘将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹和R 个第六指纹,R = 2η,η为大于或者等于1的整数;
[0022] 所述IP硬盘利用与所述第二布隆过滤器对应的哈希算法,获得所述R个第五指纹 对应的R个第四哈希值和每个第六指纹对应的R个第五哈希值;所述第二布隆过滤器的二 进制位的数目是所述第一布隆过滤器的二进制位的数目的R倍;
[0023] 所述IP硬盘将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数 值置为1,以获得第三布隆过滤器;
[0024] 所述IP硬盘获得所述第三布隆过滤器中R个所述第四哈希值对应的二进制位,若 所述第三布隆过滤器中R个所述第四哈希值对应的二进制位的数值全部为1,确定所述第 一 Value为重复数据。
[0025] 结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式 中,所述IP硬盘对所述第一 Value执行重复数据的删除操作,包括:
[0026] IP硬盘删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value ;
[0027] IP硬盘获得与所述第一 Value相同的第二Value对应的Key ;
[0028] IP硬盘在所述IP硬盘中所述第一 Value的存储地址中写入所述第二Value对应 的 Key。
[0029] 结合第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式 中,所述IP硬盘对所述第一 Value执行重复数据的删除操作,包括:
[0030] IP硬盘获得与所述第一 Value相同的第二Value对应的Key ;
[0031] IP硬盘在所述IP硬盘中所述第一 Value在的存储地址中写入所述第二Value对 应的Key。
[0032] 第二方面,本发明实施例提供了一种IP硬盘,所述IP硬盘中预设有第一布隆过滤 器;所述IP硬盘包括:
[0033] 获取单元,用于获得第一数值Value ;以及获得所述第一 Value对应的第一哈希 值;
[0034] 处理单元,用于判断所述第一布隆过滤器中与所述获取单元获得的所述第一哈希 值对应的二进制位的数值是否为1 ;若所述第一布隆过滤器中与所述第一哈希值对应的二 进制位的数值为1,判断所述第一 Value是否为重复数据;
[0035] 执行单元,用于若所述处理单元判定所述第一 Value为重复数据,对所述第一 Value执行重复数据的删除操作。
[0036] 在第二方面的第一种可能的实现方式中,所述获取单元具体用于:
[0037] 依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者,
[0038] 依据客户端通过以太网口发送的Value,获得所述第一 Value。
[0039] 结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的 实现方式中,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二Value,P 为大于或者等于1的整数,所述处理单元具体用于:
[0040] 获得所述第一 Value对应的第一指纹和每个所述第二Value对应的第二指纹;
[0041] 利用与所述第二布隆过滤器对应的哈希算法,获得所述第一指纹对应的第二哈希 值和每个所述第二指纹对应的第三哈希值,所述第二布隆过滤器的二进制位的数目大于所 述第一布隆过滤器的二进制位的数目;
[0042] 将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数值置为1,以 获得第三布隆过滤器;
[0043] 获得所述第三布隆过滤器中所述第二哈希值对应的二进制位,若所述第三布隆过 滤器中所述第二哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数据。
[0044] 结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第三种可能的 实现方式中,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二Value,P 为大于或者等于1的整数,所述处理单元具体用于:
[0045] 获得所述第一 Value对应的第三指纹和每个所述第二Value对应的第四指纹;
[0046] 将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹和R个第六指纹, R = 2η, η为大于或者等于1的整数;
[0047] 利用与所述第二布隆过滤器对应的哈希算法,获得所述R个第五指纹对应的R个 第四哈希值和每个第六指纹对应的R个第五哈希值;所述第二布隆过滤器的二进制位的数 目是所述第一布隆过滤器的二进制位的数目的R倍;
[0048] 将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数值置为1,以 获得第三布隆过滤器;
[0049] 获得所述第三布隆过滤器中R个所述第四哈希值对应的二进制位,若所述第三布 隆过滤器中R个所述第四哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重 复数据。
[0050] 结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式 中,所述执行单元具体用于:
[0051] 删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value ;
[0052] 获得与所述第一 Value相同的第二Value对应的Key ;
[0053] 在所述IP硬盘中所述第一 Value的存储地址中写入所述第二Value对应的Key。
[0054] 结合第二方面的第一种可能的实现方式,在第二方面的第五种可能的实现方式 中,所述执行单元具体用于:
[0055] 获得与所述第一 Value相同的第二Value对应的Key ;
[0056] 在所述IP硬盘中所述第一 Value在的存储地址中写入所述第二Value对应的 Key。
[0057] 由以上技术方案可以看出,本发明实施例具有以下有益效果:
[0058] IP硬盘能够利用布隆过滤器判断Value是否属于重复数据,并在判定Value为重 复数据时对Value执行删除操作,因此,IP硬盘可以自行主动删除重复数据,从而可以节省 IP硬盘的存储空间。 【【专利附图】
【附图说明】】
[0059] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附 图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附 图。
[0060] 图1是现有技术中客户端与IP硬盘的通信示意图;
[0061] 图2是本发明实施例所提供的IP硬盘的数据处理方法的流程示意图;
[0062] 图3是本发明实施例中第一布隆过滤器的示意图;
[0063] 图4是本发明实施例中第二布隆过滤器的示意图;
[0064] 图5是本发明实施例中布隆过滤器的计数器的示意图;
[0065] 图6是本发明实施例所提供的IP硬盘的功能方块图;
[0066] 图7是本发明实施例所提供的IP硬盘的结构示意图。 【【具体实施方式】】
[0067] 为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描 述。
[0068] 应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基 于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其 它实施例,都属于本发明保护的范围。
[0069] 本发明实施例给出一种IP硬盘的数据处理方法,请参考图2,其为本发明实施例 所提供的IP硬盘的数据处理方法的流程示意图,如图所示,该方法包括以下步骤:
[0070] 步骤201,IP硬盘获得第一数值Value。
[0071] 具体的,IP硬盘中会存储大量的Value,然而,这些Value中可能会存在相同的 Value,为了节省IP硬盘的存储空间,需要对IP硬盘中的重复的Value进行删除,因此IP 硬盘需要找到重复的Value。例如,IP硬盘可以对最近一个周期内存储的Value遍历,依次 判断遍历到的Value是否与IP硬盘中存储的其他Value相同;再例如,IP硬盘也可以在每 次接收到的Value时,就判断IP硬盘中已经存储的Value中是否存在与该接收到的Value 相同的Value。其中,IP硬盘对最近一个周期内存储的Value进行遍历时,依次将遍历到的 Value作为第一 Value,或者,IP硬盘将接收到的Value直接作为第一 Value。
[0072] 因此,所述IP硬盘可以依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者,所述IP硬盘也可以依据客户端通过以太网口发送的Value,获得所述第一 Value。
[0073] 例如,IP硬盘可以依据所述IP硬盘中预先存储的Value,获得所述第一 Value的 方法可以包括:
[0074] 首先,IP硬盘接收客户端通过以太网口发送的Μ个Key以及每个所述Key对应的 Value,即IP硬盘可以接收客户端提供的Μ个Key和Μ个Value, Key与Value是--对应 的,其中,Μ为大于或者等于1的整数。然后,IP硬盘依据每个Key,获得每个Key对应的 Value的存储地址;最后,IP硬盘将每个Value写入IP硬盘中相应的存储地址,这样IP硬 盘中就写入Μ个Value,IP硬盘将已经存储的这Μ个Value依次作为所述第一 Value。
[0075] 其中,IP硬盘可以利用数据布局算法获得每个Key对应Value的存储地址,例如, 数据布局算法可以是哈希算法。
[0076] 第一种方法相当于上述IP硬盘对最近一个周期内存储的Value进行遍历,依次将 遍历到的Value作为第一 Value,也就是说,IP硬盘查找是否存在重复Value的操作是周期 地进行,IP硬盘可以依据预设的周期,统一对最近一个周期内存储的Μ个Value进行逐一 判断是否为重复数据。
[0077] 再例如,IP硬盘依据客户端通过以太网口发送的Value,获得所述第一 Value的方 法可以包括:
[0078] IP硬盘接收客户端通过以太网口发送的Key和所述Key对应的Value, IP硬盘直 接将接收到的Key对应的Value作为所述第一 Value,以判断IP硬盘已经存储的Value中 是否存在与该第一 Value相同的Value。
[0079] 第二种方法相当于上述IP硬盘直接将接收到的Value作为第一 Value,也就是说, IP硬盘在每次接收到客户端提供的Key和对应的Value时,就即时判断IP硬盘中存储的 Value中是否存在与接收到的Value相同的Value。
[0080] 步骤202, IP硬盘获得所述第一 Value对应的第一哈希值。
[0081] 具体的,IP硬盘中预先设置第一布隆过滤器(Bloom Filter),该第一布隆过滤器 中包括N个二进制位,N为大于或者等于1的整数;依据第一布隆过滤器获得对应的K个哈 希算法,K为大于或者等于1的整数。例如,请参考图3,其为本发明实施例中第一布隆过滤 器的示意图,图3所示意的第一布隆过滤器中包括6个二进制位,对应的哈希算法可以是对 6取模。
[0082] IP硬盘在获得第一 Value后,依据该第一 Value,获得该第一 Value对应的K个第 一指纹(Finger Print),然后依据每个第一指纹,并利用预设的第一布隆过滤器对应的K 个哈希算法,计算对应的第一哈希值,从而可以获得第一 Value对应的K个第一哈希值。
[0083] 优选的,可以在将第一 Value写入对应的存储地址之前,获得该第一 Value对应的 K个第一指纹,也可以在将第一 Value写入对应的存储地址之后,获得该第一 Value对应的 K个第一指纹。
[0084] 优选的,IP硬盘可以依据第一 Value,利用预设的指纹算法计算第一 Value对应 的K个第一指纹,每个第一指纹对应的指纹算法不同。其中,所述指纹算法可以包括:循 环冗余校验码(Cyclic Redundancy Check, CRC)、消息摘要算法第五版(Message Digest Algorithm_5,MD5)或者安全散列算法-1 (Secure Hash Algorithm-l,SHA_l)等。
[0085] 步骤203, IP硬盘判断预设的第一布隆过滤器中与所述第一哈希值对应的二进制 位的数值是否为1。
[0086] 具体的,IP硬盘中预先设置有第一布隆过滤器,IP硬盘可以将存储的所有Value 对应的指纹都映射到第一布隆过滤器的二进制位上,被映射到的二进制位的数值将由〇设 置为1,且数值已经为1的二进制位如果再次被映射到,其数值保持为1 ;如此,当IP硬盘获 得第一 Value对应的K个第一哈希值后,就可以依据第一 Value对应的K个第一哈希值,判 断第一布隆过滤器中与K个第一哈希值对应的K个二进制位的数值是否已经全部是1。
[0087] 例如,如图3所示,对于Valuel?Value M,分别有对应的K个指纹Finger Printl[Valuel ?Value Μ]?Finger Print K[Valuel ?Value M],以及对应的 K 个哈希 值 HI{Finger Printl[Valuel ?Value Μ]}?HK{Finger Print K[Valuel ?Value Μ]}, 依据这些哈希值,IP硬盘将第一布隆过滤器相应的二进制位的数值置为1。
[0088] 如果第一布隆过滤器中与K个第一哈希值对应的K个二进制位的数值已经全部 是1,表示第一 Value可能是重复数据,IP硬盘中可能已经存储与第一 Value相同的第二 Value ;但是,这里也只能认为第一 Value是可能的重复数据,因为第一布隆过滤器中二进 制位的数目有限,而客户端提供的Value的数目较多,从而导致会出现较小的重复数据的 误判概率,因此,为了降低重复数据的误判概率,IP硬盘在确定第一布隆过滤器中与K个第 一哈希值对应的K个二进制位的数值已经全部是1的情况下,并不直接判定第一 Value是 重复数据,而是需要进一步的判断,才能确定第一 Value是否为重复数据,即执行步骤204。
[0089] 相反的,如果第一布隆过滤器中与K个第一哈希值对应的K个二进制位的数值不 全部是1,即第一布隆过滤器中与K个第一哈希值对应的K个二进制位的数值存在至少一 个0,则IP硬盘可以直接确定第一 Value不是重复数据,IP硬盘中不存在与第一 Value相 同的第二Value。另外,IP硬盘还需要将第一布隆过滤器中与K个第一哈希值对应的数值 为0的二进制位的数值设置为1,然后执行步骤201,IP硬盘继续判断下一个第一 Value是 否为可能的重复数据。
[0090] 例如,第一 Value对应第一指纹等于8,哈希算法是对6取模,利用该哈希算法计 算第一指纹的第一哈希值,则第一哈希值等于2,则可以映射到第一布隆过滤器的6个二进 制位的第2个二进制位,若该第2个二进制位的数值是0,则将该第2个二进制位的数值由 〇改为1,若该第2个二进制位的数值已经是1,则该第2个二进制位的数值保持为1。再例 如,若第一 Value对应有3个第一指纹以及3个第一哈希值,依据3个第一哈希值映射到的 第一布隆过滤器的6个二进制位中第3、4和5个二进制位,若第3、4和5个二进制位的数 值已经全部是1,则执行步骤204,若第3、4和5个二进制位的数值不是全部是1,则执行步 骤 201。
[0091] 步骤204,若所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为 1,IP硬盘判断所述第一 Value是否为重复数据。
[0092] 具体的,当所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为1 时,表示第一 Value可能是重复数据,为了降低IP硬盘对重复数据的误判概率,需要进一步 判断第一 Value是否为重复数据,即判断IP硬盘中是否存在与所述第一 Value相同的第二 Value。
[0093] 可以理解的,假设两个Value在第一布隆过滤器中映射的二进制位完全相同的概 率是P,P较小,如P可以为〇. 1%,为了能够进一步降低P,可以通过在IP硬盘的第一布隆 过滤器的基础上,增加第一布隆过滤器的二进制位的数目来进一步降低P,或者,也可以在 IP硬盘中另外再设置一个布隆过滤器,可以将新设置的布隆过滤器称为第二布隆过滤器。
[0094] IP硬盘中存储有P个第二Value,P为大于或者等于1的整数,其中,若硬盘是周 期判断是否有重复数据的操作,该第二Value中可以包括除遍历到的第一 Value外的其他 第一 Value,若IP硬盘是每次对收到的第一 Value进行判断重复数据的操作,该第二Value 可以是IP硬盘中已经存储的所有Value。
[0095] 优选的,IP硬盘判断所述第一 Value是否为重复数据的方法可以包括以下两种:
[0096] 第一种:首先,IP硬盘获得所述第一 Value对应的K个第一指纹以及P个第二 Value中每个第二Value对应的K第二指纹,从而可以获得P*K个第二指纹。
[0097] 然后,IP硬盘利用与第二布隆过滤器对应的哈希算法,获得每个第一指纹对应的 第二哈希值和每个第二指纹对应的第三哈希值,优选的,第二布隆过滤器的二进制位的数 目大于所述第一布隆过滤器的二进制位的数目,即本方法中,仅通过增加布隆过滤器的二 进制位的数目来降低重复数据的误判概率。
[0098] 接着,IP硬盘将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数 值置为1,以获得第三布隆过滤器。
[0099] 最后,IP硬盘依据第二哈希值,获得所述第三布隆过滤器中所述第二哈希值对应 的二进制位,若所述第三布隆过滤器中,所述第二哈希值对应的二进制位的数值已经全部 为1,则IP硬盘确定所述第一 Value为重复数据。
[0100] 第二种:首先,IP硬盘获得所述第一 Value对应的第三指纹以及每个所述第二 Value对应的第四指纹;并将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹 和R个第六指纹;其中,R = 2η,η为大于或者等于1的整数。
[0101] 然后,IP硬盘利用与预设的第二布隆过滤器对应的哈希算法,获得所述R个第五 指纹对应的R个第四哈希值,以及每个第六指纹对应的R个第五哈希值。优选的,本方法中, 第二布隆过滤器的二进制位的数目是第一布隆过滤器的二进制位的数目的R倍。
[0102] 接着,IP硬盘将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数 值置为1,以获得第三布隆过滤器。
[0103] 最后,IP硬盘依据R个第四哈希值,确定第三布隆过滤器中R个所述第四哈希值 对应的二进制位,若第三布隆过滤器中,R个第四哈希值对应的二进制位的数值已经全部为 1,则IP硬盘确定所述第一 Value为重复数据。
[0104] 例如,请参考图4,其为本发明实施例中第二布隆过滤器的示意图,如图所示,将图 3中的K个指纹中每个指纹都拆分成2个指纹,得到2K个指纹,可以利用2K个不同的散列 函数计算该2K个指纹,然后再利用2K个哈希算法计算这些指纹对应的哈希值,依据计算得 到的哈希值,将第二布隆过滤器中12个二进制位中相应的二进制位的数值置为1。
[0105] 再例如,第一 Value对应的第三指纹A1以及第二Value对应的第四指纹A2,将第 三指纹A1拆分成2个第五指纹,即All和A12,将第四指纹A2拆分成2个第六指纹,即A21 和A22,然后利用第二布隆过滤器对应的哈希算法,获得A11、A12、A21和A22分别对应的哈 希值,第二布隆过滤器中All和A12对应的二进制位与A21和A22对应的二进制位完全相 同的概率会呈指数级降低,如果第二布隆过滤器中Al 1和A12对应的二进制位与A21和A22 对应的二进制位还是完全相同,IP硬盘就可以确定第一 Value与第二Value是相同,第一 Value是重复数据。
[0106] 再例如,如果指纹都是8字节,可以将指纹以4字节、2字节或1字节为单位进行拆 分,对应的布隆过滤器的二进制位的数目分别是2R、4R、8R,其中R为大于或者等于1的整 数,拆分单位越小,重复数据的误判概率越低,布隆过滤器的二进制位的数目越多,重复数 据的误判概率也是越低。
[0107] 需要说明的是,上述IP硬盘判断所述第一 Value是否为重复数据的两种方法,全 局指纹匹配会将输入的指纹与已有的指纹中每个指纹逐个比对,若已有的指纹总数为S,则 平均比对次数为S/2。如果利用布隆过滤器,对于非重复指纹,可通过布隆过滤器对应的哈 希算法实现指纹对比,可以迅速比对出重复的指纹,不用与已有的S个指纹进行一一对比, 从可以减少全局指纹匹配次数。
[0108] 步骤205,若所述第一 Value为重复数据,IP硬盘对所述第一 Value执行重复数据 的删除操作。
[0109] 具体的,当判定第一 Value为重复数据时,IP硬盘可以对所述第一 Value执行重 复数据的删除操作。
[0110] 优选的,IP硬盘对所述第一 Value执行重复数据的删除操作的方法包括以下两 种:
[0111] 第一种:首先,删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value。然后,获得与所述第一 Value相同的第二Value对应的Key。最后,在所述IP硬盘 中所述第一 Value的存储地址中写入所述第二Value对应的Key。也就是说,如果步骤201 利用第一种方法实现,表示第一 Value已经存储在对应的存储地址中,那么对于是重复数 据的第一 Value需要先执行删除操作,再在第一 Value的存储地址中写入与第一 Value相 同的第二Value对应的Key。
[0112] 例如,可以在IP硬盘中预先建立指纹索引〈指纹,Value,Key列表〉,如果发现 Valuel是重复数据,则对指纹索引进行遍历,需要找到与Valuel相同的其他Value,并且该 其他Value对应的指纹需要与Valuel对应的指纹也相同,如果能够找到,则将Valuel对应 的Key保存在指纹索引〈指纹,Value,Key列表〉的Key列表中。
[0113] 第二种:首先,获得与所述第一 Value相同的第二Value对应的Key ;在所述IP硬 盘中所述第一 Value在的存储地址中写入所述第二Value对应的Key。如果步骤201利用 第二种方法实现,表示第一 Value是新接收到的Value,对于是重复数据的第一 Value不需 要进行存储,直接丢弃该第一 Value,同时在第一 Value的存储地址中写入与第一 Value相 同的第二Value对应的Key。
[0114] 可以理解的,由于第一 Value与第二Value相同,因此没有必要重复保存相同的数 据,为了节省IP硬盘的存储空间,可以将第一 Value的存储地址中存储第二Value的Key, 这样,当客户端想要读取该第一 Value时,IP硬盘依据客户端提供的第一 Value的Key找 到第一 Value的存储地址,然后在该存储地址读取到Key,依据该Key找到第二Value的存 储地址,从而获得第二Value,并将第二Value返回给客户端,第一 Value的存储地址中写入 的Key起到指针作用。
[0115] 实施例
[0116] IP硬盘接收客户端输入的Key 1和对应的Valuel,然后依据Valuel计算对应的指 纹,如指纹1 =指纹算法(Valuel)。
[0117] IP硬盘依据指纹1,利用K个哈希算法计算指纹1的K个哈希值,依据K个哈希值, 将指纹1映射到布隆过滤器的二进制位上,被映射到得二进制位的数值由〇设置为1。
[0118] 另外,数值已经为1的二进制位如果再次被映射到,其数值保持为1,但该二进制 位对应的计数器的数值为2,请参考图5,其为本发明实施例中布隆过滤器的计数器的示意 图,如图所示,计数器的数值表示该二进制位被映射到的次数,需要删除某指纹时,将对应 的二进制位的计数器的数值减去该指纹映射到该二进制位的次数。
[0119] IP硬盘保存(指纹l、Valuel、计数器1),计数器1的数值表示(指纹l、Valuel) 被重复使用的次数,当前计数器1的数值为1 ;如果计数值由1变为〇,则可以将该指纹与对 应的Value删除,同时在布隆过滤器中该指纹对应的二进制位的计数值也相应减少。
[0120] IP硬盘保存(Key 1、Value 1在IP硬盘的存储地址)。
[0121] IP硬盘接收客户端输入的Key和对应的Value2,然后依据Value2计算对应的指 纹,如指纹2 =指纹算法(Value2)。
[0122] IP硬盘依据指纹2,利用K个哈希算法计算指纹2的K个哈希值,依据K个哈希值, 将指纹2映射到布隆过滤器的二进制位上,被映射到得二进制位的数值由0设置为1。
[0123] 如果指纹2映射到得二进制位已经全部是1,表示Value2可能是重复数据,则IP 硬盘将(指纹2、Value2)与已经存入的(指纹l、Valuel)进行比较,如果比较结果是Value2 是重复数据,则IP硬盘保存(Key2、Valuel在IP硬盘的存储地址),同时,IP硬盘中保存 的(指纹1、Valuel、计数值1)中的计数值加1,表示被重复使用了 2次。如果比较结果是 Value2不是重复数据,执行非重复数据的处理流程,如将布隆过滤器中相应的二进制位的 值置为1,且被映射到的二进制位的计数器的数值加1,然后保存(指纹2、Value2、计数器 2),计数器2表示(指纹2、Value2)被重复使用的次数,当前计数器2的数值为1,最后IP 硬盘保存将(Key2、Value2在IP硬盘的存储地址)。
[0124] 本发明实施例进一步给出实现上述方法实施例中各步骤及方法的装置实施例。
[0125] 请参考图6,其为本发明实施例所提供的IP硬盘的功能方块图,所述IP硬盘中预 设有第一布隆过滤器;如图所示,该IP硬盘包括:
[0126] 获取单元601,用于获得第一数值Value ;以及获得所述第一 Value对应的第一哈 希值;
[0127] 处理单元602,用于判断所述第一布隆过滤器中与所述获取单元501获得的所述 第一哈希值对应的二进制位的数值是否为1 ;若所述第一布隆过滤器中与所述第一哈希值 对应的二进制位的数值为1,判断所述第一 Value是否为重复数据;
[0128] 执行单元603,用于若所述处理单元602判定所述第一 Value为重复数据,对所述 第一 Value执行重复数据的删除操作。
[0129] 优选的,所述获取单元601具体用于:
[0130] 依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者,
[0131] 依据客户端通过以太网口发送的Value,获得所述第一 Value。
[0132] 优选的,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二 Value,P为大于或者等于1的整数,所述处理单元602具体用于:
[0133] 获得所述第一 Value对应的第一指纹和每个所述第二Value对应的第二指纹;
[0134] 利用与所述第二布隆过滤器对应的哈希算法,获得所述第一指纹对应的第二哈希 值和每个所述第二指纹对应的第三哈希值,所述第二布隆过滤器的二进制位的数目大于所 述第一布隆过滤器的二进制位的数目;
[0135] 将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数值置为1,以 获得第三布隆过滤器;
[0136] 获得所述第三布隆过滤器中所述第二哈希值对应的二进制位,若所述第三布隆过 滤器中所述第二哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数据。
[0137] 优选的,所述IP硬盘中预设有第二布隆过滤器;所述IP硬盘存储有P个第二 Value,P为大于或者等于1的整数,所述处理单元602具体用于:
[0138] 获得所述第一 Value对应的第三指纹和每个所述第二Value对应的第四指纹;
[0139] 将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹和R个第六指纹, R = 2η, η为大于或者等于1的整数;
[0140] 利用与所述第二布隆过滤器对应的哈希算法,获得所述R个第五指纹对应的R个 第四哈希值和每个第六指纹对应的R个第五哈希值;所述第二布隆过滤器的二进制位的数 目是所述第一布隆过滤器的二进制位的数目的R倍;
[0141] 将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数值置为1,以 获得第三布隆过滤器;
[0142] 获得所述第三布隆过滤器中R个所述第四哈希值对应的二进制位,若所述第三布 隆过滤器中R个所述第四哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重 复数据。
[0143] 优选的,所述执行单元603具体用于:
[0144] 删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value ;
[0145] 获得与所述第一 Value相同的第二Value对应的Key ;
[0146] 在所述IP硬盘中所述第一 Value的存储地址中写入所述第二Value对应的Key。
[0147] 优选的,所述执行单元603具体用于:
[0148] 获得与所述第一 Value相同的第二Value对应的Key ;
[0149] 在所述IP硬盘中所述第一 Value在的存储地址中写入所述第二Value对应的 Key。
[0150] 请参考图7,其为本发明实施例所提供的IP硬盘的结构示意图。如图所示,该IP 硬盘包括:
[0151] 存储器701,用于存储一组或多组程序代码;
[0152] 处理器702,与存储器701耦合,用于调用存储器701中存储的程序代码,以执行 以下图2所示的方法,具体包括:获得第一数值Value ;以及获得所述第一 Value对应的第 一哈希值;判断所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值是否为 1 ;若所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为1,判断所述第一 Value是否为重复数据;若所述第一 Value为重复数据,对所述第一 Value执行重复数据的 删除操作。
[0153] 由于本实施例中的处理器能够执行图2所示的方法,本实施例未详细描述的部 分,可参考对图2的相关说明。
[0154] 本发明实施例的技术方案具有以下有益效果:
[0155] 1、IP硬盘能够利用布隆过滤器判断Value是否属于重复数据,并在判定Value为 重复数据时对Value执行删除操作,因此,IP硬盘可以自行主动删除重复数据,从而可以节 省IP硬盘的存储空间。
[0156] 2、传统技术中,由与硬盘连接的主机对硬盘中重复数据的进行判断、删除等操作, 或者由重删服务器统一对若干硬盘进行重复数据的判断、删除等操作,重复数据的删除操 作过渡集中于主机或者重删服务器,处理效率比较低,存在处理瓶颈;本发明实施例提供的 技术方案中,由IP硬盘自己进行重复数据的判定、删除等操作,实现分布式的重复数据的 处理,能够及时进行重复数据的删除,大大提高处理效率,提高IP硬盘性能和硬盘可靠性。
[0157] 3、本发明实施例中,IP硬盘对Value进行重复数据的多重判断操作,能够降低重 复数据的误判概率,减少IP硬盘的误删除事件。
[0158] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
【权利要求】
1. 一种网络互连协议IP硬盘的数据处理方法,其特征在于,所述IP硬盘中预设有第一 布隆过滤器;所述方法包括 : 所述IP硬盘获得第一数值Value ; 所述IP硬盘获得所述第一 Value对应的第一哈希值; 所述IP硬盘判断所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值是 否为1 ; 若所述第一布隆过滤器中与所述第一哈希值对应的二进制位的数值为1,所述IP硬盘 判断所述第一 Value是否为重复数据; 若所述第一 Value为重复数据,所述IP硬盘对所述第一 Value执行重复数据的删除操 作。
2. 根据权利要求1所述的方法,其特征在于,所述IP硬盘获得第一 Value,包括: 所述IP硬盘依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者, 所述IP硬盘依据客户端通过以太网口发送的Value,获得所述第一 Value。
3. 根据权利要求1或2所述的方法,其特征在于,所述IP硬盘中预设有第二布隆过滤 器;所述IP硬盘存储有P个第二Value,P为大于或者等于1的整数,所述IP硬盘判断所述 第一 Value是否为重复数据,包括: 所述IP硬盘获得所述第一 Value对应的第一指纹和每个所述第二Value对应的第二 指纹; 所述IP硬盘利用与所述第二布隆过滤器对应的哈希算法,获得所述第一指纹对应的 第二哈希值和每个所述第二指纹对应的第三哈希值,所述第二布隆过滤器的二进制位的数 目大于所述第一布隆过滤器的二进制位的数目; 所述IP硬盘将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数值置 为1,以获得第三布隆过滤器; 所述IP硬盘获得所述第三布隆过滤器中所述第二哈希值对应的二进制位,若所述第 三布隆过滤器中所述第二哈希值对应的二进制位的数值全部为1,确定所述第一 Value为 重复数据。
4. 根据权利要求1或2所述的方法,其特征在于,所述IP硬盘中预设有第二布隆过滤 器;所述IP硬盘存储有P个第二Value,P为大于或者等于1的整数,所述IP硬盘判断所述 第一 Value是否为重复数据,包括: 所述IP硬盘获得所述第一 Value对应的第三指纹和每个所述第二Value对应的第四 指纹; 所述IP硬盘将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹和R个第 六指纹,R = 2η,η为大于或者等于1的整数; 所述IP硬盘利用与所述第二布隆过滤器对应的哈希算法,获得所述R个第五指纹对应 的R个第四哈希值和每个第六指纹对应的R个第五哈希值;所述第二布隆过滤器的二进制 位的数目是所述第一布隆过滤器的二进制位的数目的R倍; 所述IP硬盘将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数值置 为1,以获得第三布隆过滤器; 所述IP硬盘获得所述第三布隆过滤器中R个所述第四哈希值对应的二进制位,若所 述第三布隆过滤器中R个所述第四哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数据。
5. 根据权利要求2所述的方法,其特征在于,所述IP硬盘对所述第一 Value执行重复 数据的删除操作,包括: IP硬盘删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value ; IP硬盘获得与所述第一 Value相同的第二Value对应的Key ; IP硬盘在所述IP硬盘中所述第一 Value的存储地址中写入所述第二Value对应的 Key。
6. 根据权利要求2所述的方法,其特征在于,所述IP硬盘对所述第一 Value执行重复 数据的删除操作,包括: IP硬盘获得与所述第一 Value相同的第二Value对应的Key ; IP硬盘在所述IP硬盘中所述第一 Value在的存储地址中写入所述第二Value对应的 Key。
7. -种IP硬盘,其特征在于,所述IP硬盘中预设有第一布隆过滤器;所述IP硬盘包 括: 获取单元,用于获得第一数值Value ;以及获得所述第一 Value对应的第一哈希值; 处理单元,用于判断所述第一布隆过滤器中与所述获取单元获得的所述第一哈希值对 应的二进制位的数值是否为1 ;若所述第一布隆过滤器中与所述第一哈希值对应的二进制 位的数值为1,判断所述第一 Value是否为重复数据; 执行单元,用于若所述处理单元判定所述第一 Value为重复数据,对所述第一 Value执 行重复数据的删除操作。
8. 根据权利要求7所述的IP硬盘,其特征在于,所述获取单元具体用于: 依据所述IP硬盘中预先存储的Value,获得所述第一 Value ;或者, 依据客户端通过以太网口发送的Value,获得所述第一 Value。
9. 根据权利要求7或8所述的IP硬盘,其特征在于,所述IP硬盘中预设有第二布隆过 滤器;所述IP硬盘存储有P个第二Value,P为大于或者等于1的整数,所述处理单元具体 用于: 获得所述第一 Value对应的第一指纹和每个所述第二Value对应的第二指纹; 利用与所述第二布隆过滤器对应的哈希算法,获得所述第一指纹对应的第二哈希值和 每个所述第二指纹对应的第三哈希值,所述第二布隆过滤器的二进制位的数目大于所述第 一布隆过滤器的二进制位的数目; 将所述第二布隆过滤器中每个所述第三哈希值对应的二进制位的数值置为1,以获得 第三布隆过滤器; 获得所述第三布隆过滤器中所述第二哈希值对应的二进制位,若所述第三布隆过滤器 中所述第二哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数据。
10. 根据权利要求7至8所述的IP硬盘,其特征在于,所述IP硬盘中预设有第二布隆 过滤器;所述IP硬盘存储有P个第二Value,P为大于或者等于1的整数,所述处理单元具 体用于: 获得所述第一 Value对应的第三指纹和每个所述第二Value对应的第四指纹; 将所述第三指纹和每个所述第四指纹分别拆分成R个第五指纹和R个第六指纹,R = 2η,η为大于或者等于1的整数; 利用与所述第二布隆过滤器对应的哈希算法,获得所述R个第五指纹对应的R个第四 哈希值和每个第六指纹对应的R个第五哈希值;所述第二布隆过滤器的二进制位的数目是 所述第一布隆过滤器的二进制位的数目的R倍; 将所述第二布隆过滤器中每个所述第五哈希值对应的二进制位的数值置为1,以获得 第三布隆过滤器; 获得所述第三布隆过滤器中R个所述第四哈希值对应的二进制位,若所述第三布隆过 滤器中R个所述第四哈希值对应的二进制位的数值全部为1,确定所述第一 Value为重复数 据。
11. 根据权利要求8所述的IP硬盘,其特征在于,所述执行单元具体用于: 删除所述IP硬盘中所述第一 Value的存储地址中存储的所述第一 Value ; 获得与所述第一 Value相同的第二Value对应的Key ; 在所述IP硬盘中所述第一 Value的存储地址中写入所述第二Value对应的Key。
12. 根据权利要求8所述的IP硬盘,其特征在于,所述执行单元具体用于: 获得与所述第一 Value相同的第二Value对应的Key ; 在所述IP硬盘中所述第一 Value在的存储地址中写入所述第二Value对应的Key。
【文档编号】G06F3/06GK104123102SQ201410362354
【公开日】2014年10月29日 申请日期:2014年7月25日 优先权日:2014年7月25日
【发明者】雷晓松 申请人:华为技术有限公司