做任何商业IaaS对象存储(S3,Azure Blob等)避免多次存储重复数据(相同的文件,或部分文件)? 例如,我们有一个15 TB的tweet数据集,我们的团队中的一个想要做一个副本,然后对数据进行一些修改。 我们会收取30TB的存储费吗?
有没有一种很好的方法来查找这些大型对象存储上的重复块,或就地压缩大型数据集? 我们可以用某种符号链接replace重复的文件吗?
存储提供商(至lessAWS,Google和Microsoft)不会对blob对象执行重复数据删除和/或压缩。 这会导致不可预知的延迟,抖动增加和RAM消耗增加。 并不是说在这种情况下实施良好的计费策略是不可能的,而且跨多个服务器/可用性区域去除对象是一项巨大的技术挑战。
你可以在你的末端实现压缩。 重复数据删除比较困难,因为您需要使用哈希表等维护中间件。
另一种方法是在您的EC2实例上使用ZFS而不是S3。 您可以附加EBS卷并将它们装载为ZFS卷,ZFS具有内置的压缩和重复数据删除function。 如果您在多个EC2实例上需要这些文件/对象,则始终可以将ZFS导出并导入为NFS共享。 再次重复数据删除将需要额外的RAM 。
您可以使用现场重复数据删除function,这可以通过一些备份解决scheme执行,例如https://www.veeam.com/hyper-v-vmware-backup-deduplication-compression.html ,并将推送的数据推送到云端,从而节省networking带宽。 如果及时恢复至关重要,这可能是有用的。
我们有相当大量的虚拟机运行在我们的产品atm上,并且使用了Veeam和Starwind,所以我认为这是一个类似的例子。 还testing了其他解决scheme,例如MS DPM和Backup Exec,但Veeam显示出更好的结果。