对消息传递上的附件的去重复以及对附件的自动修复的制作方法_2

文档序号:8269407阅读:来源:国知局
开存储一一例如存储在元数据存储112中。
[0025] 系统可以包括一组机器,其中每一个都具有其电子邮件消息副本以及记录已到达 且按到达日期组织的日志。机器可以不时地彼此对话、比较它们的日志、并且将它们认识到 尚未复制的任何消息复制到所有机器。这可出于各种原因而发生,大多数原因是由于机器、 网络或硬盘驱动器发生故障。在一些情况下,日志远远不同步,在这种情况下系统进行完全 比较/复制。
[0026] 尽管硬盘驱动器变得更大且更便宜,但硬盘驱动器能够检索数据的速度没有改变 太多。这意味着尽管硬盘驱动器可以在更大的硬盘驱动器上打包更多数据,但硬盘驱动器 最终将无法处理请求的速率。该领域新兴的一种技术是闪存(也被称为SSD,即固态驱动 器)。SSD使用类似于在SD卡或USB棒上的技术,但具有更快的内部芯片组和长得多的寿 命。普通硬盘驱动器每秒能执行略超过一百个读/写操作,而最快的SSD中的某一些每秒 能进行超过十万个操作。然而,这需要代价,因为当你看到你将为每千兆字节的存储支付什 么时这些设备可能比硬盘驱动器贵10到100倍。
[0027] 在存储电子邮件消息时,系统可以保持关于这些消息的跟踪信息(元数据112), 诸如你文件夹中的消息的列表、你的消息的已读/未读状态、对话线程、移动电话同步等。 该元数据往往占据总体存储空间中一极小部分,但由于其不断改变的本质,该元数据会在 硬盘驱动器上消耗显著份额的负载。
[0028] 通过对于该小的且快速改变的数据集使用SSD、以及使用最大硬盘驱动器来用于 存储消息,系统可以能够利用更大且更便宜的硬盘驱动器的趋势而无需在系统的性能方面 作出任何牺牲。
[0029] 在一个实施例中,系统--在文件和/或消息传递时--可以检测该文件和/或 消息是否大于给定阈值大小(比如说Y),或者文件和/或消息是否具有大于给定阈值大小 (比如说Y)的附件(比如说X)。如果是,则系统可以检测以查看确切的文件、消息或附件X 是否已传递给系统上的用户、由用户共享(或由用户存储)。为检查以查看文件、消息和/ 或附件是否已传递给系统上的用户和/或与之共享,系统可以对文件、消息和/或附件执行 散列函数,并且比较各先前散列结果以寻找匹配。另外,系统可以存储和/或保留与文件、 电子邮件消息和/或附件有关的元数据,包括:状态元数据、与如何会发生共享和/或重复 和/或会发生与谁的共享和/或重复有关的元数据。
[0030] 如果文件、消息和/或附件已被传递、共享一一且"团块"处于良好状态,并且还不 存在超过另一阈值数量(比如说Z)个对X的引用和/或链接,则增加该团块的引用计数并 且"指向"该团块以用于新消息传递,而不再次将X保存在文件系统上。在这一过程期间, 系统还可以检测盘上的"团块"是否被损坏,并且如果是,则用良好X修复或替换。例如,在 图1的上下文中,当客户端102b将带有相同附件的电子邮件104转发给另一目标客户端和 /或实体时,则客体可以转发对该附件的指针引用,而无需创建该附件的另一重复。
[0031] 将理解,其他系统一一诸如数据库、电子邮件系统和/或其他文件系统一一可以具 有与参考图1描述的系统不同的体系结构;但本申请的技术对其他此类体系结构而言也是 有益的。
[0032] 去重复实施例
[0033] 在电子邮件系统(仅出于示例性目的)的上下文中,系统的一个实施例可以被设 计成在邮件递送时标识重复的附件,并且在文件存储上对它们进行去重复;由此可能实现 盘的34%或更多的节省以及I/O和网络带宽节省。除了唯一地标识附件之外,系统可以结 合对以下各项的理解:"团块"生命周期,在"团块"变为已丢失或已损坏的情况下如何从其 他源机器或盘驱动器执行"团块"的重新复制,以及执行热点"团块"管理以确保文件系统 的存储和I/O的高效性。
[0034] 在许多电子邮件系统中,注意到很大比例的内容包括跨许多电子邮件帐户存储的 一小组大附件。根据这一观察,本申请的其他实施例期望通过允许这些附件被存储一次 (或有限次数)并且在多个帐户内或跨多个帐户共享来加以利用。在一个实施例中,系统可 以从消息文件中提取出附件并且分开地存储,以使得它们可独立于其源自的帐户而被引用 和跟踪。
[0035] 本申请的其他实施例可以包括用于实现以下操作的模块:
[0036] (1)找出重复:用于实现允许将新传递的内容标识成供去重复的候选并且允许定 位和利用现有重复的索引机制的模块。
[0037] (2)维护重复:用于在面临硬盘驱动器故障和数据损坏时修复和维护经去重复的 数据的模块,并且在其他实施例中,由于单个经去重复的团块的丢失会影响许多帐户而尤 其要小心。
[0038] (3)垃圾收集:用于安全地移除不再被引用的附件的模块。
[0039] 在一些实施例中,选择去重复的范围以符合单个SQL数据库的范围是可能的。在 这一情况下,可以发现帐户所引用的存储在同一SQL数据库内的重复团块。在这样的实施 例中,这一范围可以允许系统实现空间节省,而同时简化重复发现和垃圾收集。在一些实施 例中,在一些实施例中,允许同一重复的多个副本存储在不同盘分组中以便限制因单个附 件的丢失造成的破坏量是有可能的。
[0040] 电子邮件部分/附件的标识和管理
[0041] 在一个实施例中,用于标识各个电子邮件部分的模块是合乎需要的,以检测和/ 或标识可能经受去重复的那些部分(例如,附件等)。在标识模块的另一方面,该模块还可 以辨别和/或成功地标识可能为同一或另一个体切碎并且具有指向同一切碎的附件的多 个帐户的那些附件,而无需考虑隐私或数据损坏。例如,密码散列可用于作出各附件之间的 唯一性。
[0042] 另外,在经去重复的附件已存在于盘上的情况下,可能不再需要将该附件写到盘 上,但系统可以简单地使引用计数(refcount)递增,并且通过不重写该附件来节省盘空 间、10以及网络带宽。该模块注意并跟踪团块的生命周期是合乎需要的。更具体地,该模 块可以贯穿切碎的附件可处于各个状态来跟踪团块,诸如何时要删除该附件、递减/递增 对该附件的引用、或替换该附件。在团块被丢失和/或损坏的情况下,从其他源机器/盘进 行自动重新复制可能是合乎需要的。另外,一些更多的技术可能是合乎需要的,诸如自动恢 复丢失的元数据以及使存储回到一致;使引用计数(如此处解释的)递增的附件的优先级 排序;以及具有用于在引用普遍时减少热点的溢出机制。
[0043] 为了标识附件以及可能包括团块的其他对象,某个实施例可以在MIME部分边界 作出这一标识。在这一实施例中,可能存在系统所使用/所识别的消息的多个表示:
[0044] (1) "文字MME":这可以就是在经由SMTP接收到时的MME消息。附件可以被包 括作为base64或二进制编码的流。
[0045] (2) "经压缩的MME"或"VI":这可以是经由Xpress压缩的文字MME格式。
[0046] (3) "附件存储"消息格式:这可以是具有经提取的附件并且将其分开地放在文件 末尾的容器。
[0047] 在一个实施例中,增强"附件存储"格式以支持指向作为分开的文件存储在盘上的 团块的指针是
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1