[BuildRelease]RSync+netapp实现build的快速传输和高效存储

 

Rsync + Netapp

 1、Rsync 通过将文件切割为多块,只传输变化的块来实现文件的快速同步。

 2、Netapp 使用NAS,统一存储管理,备份恢复技术。 

  

二 Rsync和Netapp来实现builds的存储和快速传输

1) 架构

 

2)技术

*使用MD5码来对文件唯一标识(fsum可以生成md5);

*使用Linux的hard link技术来实现冗余文件删除,相同文件只存储一份;

*使用Rsync来实现文件的快速同步;

*使用Netapp来实现文件的统一存储管理备份恢复;

 

3)实现

*在将build sync到Rsync Server前对build中每个文件创建MD5,且记录到build.md5中;

*在Rsync Server上利用Linux的hard link技术对相同的文件只存储一份,利用将文件的MD5码分割为多段来实现多级目录结构来存储文件,且使用一个全局的md5码的数据库来记录Rsync Server存储的所有的文件;

*将build的build.md5 sync到Rsync Server,然后检查build.md5中哪些文件在Rsync server不存在需要传输,将需要传输的文件记录到build.list中;

*将build.list从Rsync Server 中sync到本地,然后sync build.list中的所有文件到Rsync Server;

*在Rsync Server,根据build.md5文件中的目录结构信息和md5信息来重构build的结构,重构的build中所有的文件已经都是hard link;

*自动将Rsync Server中的新文件和build(包含hard link)sync到netapp;

*自动将Rsync Server中的新文件和build(包含hard link)sync到其他的Rsync Server;

 

*在传输build.md5时同时传输builg.tag文件,build.tag包含了build在netapp的存储目录,sync成功后要email通知的members;

*更优化地直接将netapp的存储空间mount到Rsync server,这样就不必要进行Rsync Server到netapp的同步;

*此实现跟RSync的实现过程一样,更好地实现了在server重复文件存储一份的技术;

 

RSync本身的工作过程:(Rsync包含Client和Server)(我的理解)

* Client构造FileList,FileList包含了文件信息对name->id,(id用来唯一表示文件例如MD5);
* Client将FileList发送到Server;
* Server上运行的Generator程序处理FileList,构建NewFileList,其中删除Server上已经存在的文件的信息对,对没有存在的文件构造信息对 name->empty id,对已经改变的文件构造信息对name->server similar file id;
* Client得到NewFileList,对里面的已经变化的文件进行处理,将变化的文件与Server上指定的similar文件都分割为多个block,相同的block只传输相对于server上similar文件的偏移量,变化的block完全传输;

* Client得到NewFileList,对server没有的文件完全传输;
* Server根据传来的文件的id,变化的block,不变的block的偏移量和server的similar文件,最总构造client需要传输的文件;

 

4)如图

 

 

完!

 

posted @ 2010-06-28 15:51  iTech  阅读(683)  评论(0)    收藏  举报