1. 介绍
Cumulus是一个基于薄云的备份软件。厚云是有功能完善的客户端服务软件,像金山快盘,其他一些公司的网盘,而薄云是指服务商只提供了很少的接口(如put,get,delete),像亚马逊的云存储接口S3,百度的云存储接口等,逻辑操作全部由客户来完成设计。
为什么使用薄云?
基于数据中心服务的缺陷:云计算已经是一个很热的话题,它已经成为下一代存储数据与部署软件及服务的基础设施。数据中心提供商虽然具有高性能以及高吞吐率的优势,然而缺少灵活性,在转换提供商(提供者)之见具有很高代价(不如某个提供商的数据中心瘫痪等,你需要另外的服务商);另外基于数据中心的技术设施提供商针对于抽象的资源提供少量的借口(例如,“store file”),增加了可移植性和服务商切换的便利性,但是潜在的引发了其他的开销:缺乏服务器端的应用集成(the lack ofserver-side application integration)。
备份到云的好处:备份到云是一个安全的策略,可以保证主机由于灾难引发的后果,因为可以从云端恢复我们的数据,另外,数据的可靠性,安全性都有云端来处理,降低了自己的维护成本。
厚云的缺陷:服务只能锁定到具体的提供商,不够灵活。
薄云的优势:通过公共接口可以在多个服务器间提供商灵活切换,甚至可以以分布式方式存储到各个服务提供商,进一步增加数据的可靠性。
2 特点:
具备的特点:全量备份,增量备份(使用rsync-style deltas), 元数据与数据分离存储,空间回收(段清理), 加密和压缩;数据去重
3 设计
3.1 存储服务器接口
存储服务应提供以下接口:
get 给出文件名,从服务器端下载文件到本机
put 上传跟定文件名字的文件到服务器
list 列出服务器上的文件名字
delete 在服务器端 删除指定的文件,并回收空间
3.2 存储段
段是客户端与服务器交互的单位 ,像百度云存储提供的是操作单位是 Object。每个段作为一个单独的文件。对于小文件,要合并聚集为一个段,这样有助于减少客户端与服务器交互的次数等开销;另外根据局部性也有助于压缩的更好实施。段的操作提供一定的加密措施和访问控制信息。
3.3 快照格式
快照格式(snapshot format) 由两部分组成:文件元数据和文件数据。元数据及数据信息都存储在段中,且都会被分割为块(blocks or objects),这些块组成一个段(Segment)。不同文件拥有独立的元数据信息,但是共享相同的数据信息。在数据去重过程中,一个文件会被切割为不同大大小小的的块,这些大大小的块最后要组合为一个段,然后才发给服务器。每个段具有唯一的名字或标示,在发给服务器之前可进行压缩,加密等。
3.4 文件增量
只保存文件改变的部分。每个文件由一些列块描述(blocks), 如果后续的备份文件没有改变,只引用指向已存在的块即可。另外支持只保存改变的字节范围的数据。
3.5 段清理(Segment Cleaning)
两种段清理方法:
1种是,在某个Segment有块删除时,则下载此Segment到客户端,把无用的块删除,然后上传到服务器。为了减少删除的频繁度,也可以在一定周期内检查是否有数据块删除,然后对相应的Segment进行清理。这中方法的缺陷是:段清理需要需要下载Segment和上传Segment ,需要花费一定的上传下载费用,如果一个段只有很少的数据块被删除,但是却对一个Segment进行操作,显得有点不值,或者小题大做。
第2种是,通过重写的方式来进行删除。在某个Segment有数据块删除时,并不进行段清理,而是在某些段只剩下很少的有用内容时,有用内容小于一定的阀值(即有用内容与段大小的比值P),则在备份过程中,重写此段中的有用内容,而不是引用此段的内容,这样此段就可以进行删除了(通过delete命令)。此方法的好处是,段只需要写操作,不需要更新操作(清理), 简单方便。缺点是:重写意味着牺牲少许去重率,需要上传开销,可以通过设定合适比例,来减小开销。与方法1相比,还是有很大优势的。
参考文献:MICHAEL VRABLE, STEFAN SAVAGE and GEOFFREY M. VOELKER(University of California, San Diego),Cumulus: Filesystem Backup to the Cloud,ACM Transactions on Storage, Vol. 5, No. 4, Article 14, Publication date: December 2009.