基于云存储实现多机文件同步

邵宪津,朱立谷,李强

Xianjin Shao,     Ligu Zhu,  Qiang Li

1.中国传媒大学 存储实验室 北京市 100024

1. Laboratory of Networked Storage, Communication University of China, Beijing 100024, China

 

File Synchronization of Multiple Computers base on Cloud Storage

Abstract: With the widespread of computers and the social development, both the personal remote and electronic office are becoming more and more popular, which results in the issue that how to synchronize of large amounts of data on multiple computers. In this paper, the mechanism of metadata is used to synchronize directories of files and control file version, and the segmentation to speed the transmissioin of a large file according to the property that the cloud storage can store additionally. Then, the platform of cloud storage is responsible for relaying and caching the new version of files to achieve the synchronization among multiple computers.

 

Keyword: cloud storage; file synchronizer; metadata

 

摘要:随着计算机的大众化以及社会的发展,个人异地办公和电子化办公越来越普遍。随之而来的问题是如何实现大量的数据在多台计算机之间进行同步。使用元数据机制实现文件目录同步和文件版本控制。根据云存储可以对文件追加存储的特性,采用文件分片机制提高大文件传输效率。通过云存储平台进行中转缓存,实现多台计算机之间数据的同步。

关键词:云存储;文件同步;元数据

文献标识码: A    中图分类号:  TP311

 

引言

正是因为网络的发展和个人计算机的普及以及存储产品性价比的提高,使得文件同步的实现成为了可能。推动了文件同步技术的发展。首先,云理念的提出以及云存储的应用,为个人用户将大量的个人文件存储到远程云端提供了存储空间。云存储不仅仅以存储服务的形式提供了大容量的存储空间,而且提供了有效的数据管理机制,进一步保证了数据的有效性和安全性。其次,网络技术的发展,尤其是Internet的发展,使得网络负载能力和容错能力得到大大的提高。网络的发展为大量文件安全、可靠、快速的传输提供了路径。

人们进行异地办公和电子化办公越来越普遍。这样就出现了一个问题,如何把最新版本的数据更新到异地办公的另外一台计算机上?即我们在本地修改完成文件,异地计算机如何获得最新的文件。文件同步可以很好的解决了这么一个问题。它实现了多台计算机之间文件的更新,从而方便了人们的异地办公等。

本文在以下部分将对多机文件同步的定义和一些相关研究进行阐述。对多机文件同步客户端的设计与实现进行描述。

相关研究

近年来,国内和国际上的研究机构对存储服务和如何提高文件远程传输效率进行了大量的研究,主要研究成果包括大文件同步、云存储和备份等。

2.1 大文件同步

现在研究机构对大文件同步的研究取得了一定的成果,比如在低带宽环境下如何以最小的代价实现大文件的同步,详细技术见参考文献[4]。该文献详细讨论了大文件同步的细节,但是其前提环境是仅仅对一个文件的两个版本在不同计算机之间的同步。在大文件同步中往往忽略了对文件目录的控制。

2.2 云存储

云存储作为一种新的理念被提出后,受到各大厂商和研究机构的热捧。云存储通过网络为个人或者企业提供存储服务和存储软件功能。云存储有两大基本特征:第一:云是由一些廉价的服务集群构成。第二:通过服务集群、分布式存储和数据冗余,一个文件在云存储中拥有多个副本以达到云存储的高可用性和高扩展性[8],例如Amazon的S3。

2.3 文件备份

根据距离进行分类,文件备份可以分为较短距离的备份和远程备份。其中远程备份时,客户端通过Internet网络与服务器端连接,向服务器端备份同步数据或者从服务器端恢复数据。一个好的远程备份系统,即使在低宽带、低网速的环境下,也能够提供高效、快速、可靠的数据传输链路。[10]

现在文件备份的研究成果表明,文件备份可以很好的完成本地文件与远程备份之间的同步。但是文件备份最终是实现文件的恢复,无法进行多机之间的文件同步。此外,文件同步不需要云存储端进行复杂的版本控制。

系统设计

3.1 多机文件同步

多机文件同步指的是同一个文件的不同版本存在于两个或者多个计算机上。将不同计算机上不同版本的该文件通过计算机网络更新为最新版本的文件的过程。即,假设现在有计算机A、B、C,在三台计算机中有同一个文件F。起初F在三台电脑上的版本是相同的。某一时刻A上的文件被修改,B、C上的文件F变为old版本的文件而A上的文件F变为new版本的文件。多机文件同步就是通过网络实现将B、c上old版本的F更新为new版本的过程。

多级文件同步与传统的人们通过拷贝实现的文件同步相比较,有以下优点:

1)    文件同步使得同一文件在多台计算机中保持数据一致性更加方便。通过网络实现了多台计算机的同一文件的同步,与传统的使用移动存储设备相比较更加方便。

2)    文件同步克服了人工同步过程中可能出现的遗漏某台计算机的现象。使得文件同步的出错率大大降低,提高了数据的一致性。

3.2 系统设计

云存储以存储即服务的理念,对外提供高可靠、高扩展和高效率的存储服务。多级同步以云存储为中转平台,采用间接同步方式代替直接多机同步方式。因为在某一台计算机中的文件版本发生更新时,需要同步的计算机不一定处于开机状态。云存储与传统存储设备相比较有着其无法替代的优势:

1)       提供多种类型的网络在线存储服务。

2)       在数据安全、可靠和效率等方面比较高效,而且云存储规模大、服务范围广。

3)       有其自身的高效的管理系统,减少了用户的数据管理开销。

4)       能够满足365*24不间断的提供在线存储服务。

如下图:

 基于云存储实现多机文件同步1

图1 系统架构

三台处于不同地域的计算机A、B、C进行文件同步。它们将各自所拥有的加入到文件同步中的文件的最新版本同步到云端,然后处于不同地域的计算机与云端进行通讯获取最新版本的文件来替换本地的旧版本的文件。多机文件同步的目的是将最新版本的文件同步到其他异地计算机。所以,在整个多机文件同步中,云存储端只需要保留最新版本的文件和文件相关信息,不需要维护该文件的多个版本。

上述三台计算机A、B、C处于同步状态,它们在任何时候任何地点均可以进行文件同步。根据三台计算机拥有者的不同可以分为不同的同步情形:第一、三台计算机属于一个人拥有,那么此时是属于一人多机的情况下进行同步。第二、三台计算机在理论上属于协同工作的一个小组,但是它们处于不同的地域,此时属于多机同步之间的协同工作。第三、参与同步的计算机是上述两种情形的混合。

客户端运行客户机上,云存储数据可以分为元数据和数据。元数据在文件同步中发挥着至关重要的作用。一方面,进行各同步文件目录的控制,另一方面,进行文件版本的控制。客户端与云端采用HTTP或者HTTPS传输协议。

系统结构与关键技术实现

4.1 系统整体结构

基于云存储实现多机文件同步2

图2 系统结构图

系统结构如图2所示,可分为4个层次,存储层、接口层、核心层、用户层。存储层可以是私有的云存储也可以是公有的云存储。接口层是云存储对外提供的API。核心层是整个客户端软件的核心逻辑。用户层提供用户权限控制。

其中核心层各组成部分如下:

1)  本地存储。客户端的本地磁盘等存储设备。

2)  元数据。从本地提取需要同步的文件的元数据,包含路径、名称、创建日期、最新修改日期、版本号、上一层路径、相对路径等。通过元数据与同步策略相结合实现文件的同步。

3)  传输管理。控制文件的上传和下载。本地文件版本以及云端文件版本和文件更新时间决定文件的上传和下载。传输管理模块主要实现了同步复制和异步复制两种机制。同步复制是指当文件发生更新时,自动进行文件同步。异步复制又称为定时复制,是指客户端设定本地同步时间,在到达同步时间时自动进行文件同步。

4)  同步策略即文件上传和下载的策略。如果本地存在文件并且是最新版本的那么需要根据上传策略进行同步到云端,如果云端版本高于现有版本那么需要将云端文件同步即下载到本地。根据文件更新的多少,采用完全传输和部分传输。

5)  数据传输。根据同步策略在该模块中形成文件上传和文件下载的队列。该模块完成数据上传和下载的操作并对上传和下载进行控制。根据更新文件大小的不同,客户端自动采用分片传输和不分片两种传输方式。

6)  用户模块。用户模块对用户进行身份验证和权限控制。

4.2 关键技术

4.2.1目录结构控制

当对文件夹进行同步时,数据进行同步之前,需要完成对文件目录的同步,即此次同步的顶层文件夹下所有文件夹进行同步。由于文件夹没有具体的数据,所以文件夹的同步是通过更新元数据完成的。在进行数据同步之前,首先扫描本地文件夹更新本地元数据记录。这里的更新是成为伪更新,即只是标记元数据修改、删除和新增状态,将已同步修改为未同步。其次,与云端进行通信完成元数据的同步,根据云端元数据与本地元数据的比较,最终决定元数据的状态。

在元数据中如何实现文件夹层次结构和文件夹的父子关系的表示?在元数据中保存文件夹的相对目录和文件夹的父文件夹的相对目录以及文件夹所在的相对层数。这里的相对均指相对于要同步的最顶层的那一个文件夹。而在顶层的文件夹中保存的是该文件夹的绝对路径。并且对于每个拥有绝对路径的文件夹有一个统一的ID号,这个ID号是有云存储产生的。通过将元数据同步到云端,在云端同样会建立一个文件夹的树形结构。文件数据传输完毕时,更新元数据的修改时间和元数据的状态。

4.2.2文件版本控制

同步的目的是实现文件的同步更新。每个客户端上只是保存着同步文件的一个版本,并且是该客户端已知的最新版本。云存储作为同步的平台,其上保存的文件版本是真实的最新。最糟糕的情况下,每台计算机拥有不同的版本。因此,整个系统中文件的版本数量是一定的,即不会大于参与同步的计算机的数目。

版本控制,采用版本号与文件修改时间相互配合的方式实现。同步数据传输之前,首先将本地版本号与云端的版本号进行比较,将云端版本的文件修改时间与本地版本的修改时间比较。只有当二者完全吻合的或者版本号吻合情况下,才说明不需要进行同步。否则进行文件同步。进行文件同步时,将本地文件版本号修改为云端的版本号。

4.2.3大文件传输

大文件同步的主要问题是如何加快大文件的传输,并且维护文件传输过程的一致性。云存储通常提供文件的追加写入,不提供文件的随机写接口,对大文件进行分片后也只能逐片追加,不能利用多线程机制加快文件传输。客户端采用这一个简单的机制,来利用多线程加快文件传输。系统在分片的基础上,将文件进行分段,除最后一段外,每段含有相同数目的文件片。系统在云端为每一段文件创建一个独立的文件,同时系统创建一个特殊的文件,按分段顺序记录这些段的cid。这样针对每一段再利用独立的线程进行传输,来加快文件的上传。不过该方法也有一定的局限,在出口带宽受限的网络环境中,对速度并没有大的提升。

对于文件传输的一致性,需要考虑在文件传输过程中,文件以排他写的方式打开进行传输。系统计算文件HASH并与原有HASH进行比对,如果HASH变化,系统这里没有做算法的优化,只是简单地清除掉云端已传的文件片,然后重新进行传输。

系统测试与效果

我们实现了一个同步客户端的原型,利用实验室的私有云平台进行了性能实验。实验环境如下:

1)  硬件组成

服务器端:基于PC的服务器;双64b Inter Xeon 2.0GHz,4048KB Cache CPU;8GB内存,挂载RAID5存储2TB,1000Mbps网卡;客户端:Intel Core2 2.53GHz CPU,2GB内存,SATA 7200转硬盘,1000Mbps网卡;网络:1000Mbps交换机构建的LAN。

2)  软件环境

服务器端:RedHat AS5(内核2.6.30),Web服务器APACHE(2.2.16);客户端:Windows XP(SP2)。

3)  测试方法

选用不同大小的连续数据文件进行测试,文件上传和下载包括元数据提取,文件分片等操作。先进行的是分片测试,通过选用不同的分片大小测试出该环境下最佳的文件分片。

基于云存储实现多机文件同步3

图3 文件分片测试

在第一个试验中,我们选用50M,100M的数据文件分别用不同的片大小进行上传。从128KB到8MB,结果表明在分片大小为4M时具有最大写速度,速度大小为7MBps。

基于云存储实现多机文件同步4

图4 文件同步测试

在第二个试验中,我们选用4KB到200MB的数据文件分别进行同步上传和同步下载。根据实验结果反应,我们在系统中根据文件数据大小采用不同的传输策略是有效的。文件传输速率在7MBps左右。

总结

通过对云存储和文件备份进行分析,提出以云存储为平台的多机文件同步。详细介绍了多机文件同步客户端软件的设计与实现。本文中采用元数据机制,实现文件目录同步和文件版本控制等。采用分片技术,加快大文件的同步。充分利用了云存储可以接受第三方元数据的特点以及提供的API接口,实现了多机文件同步的设计。

 

致谢  在本课题的研究阶段非常感谢朱老师给予的指导,感谢李强等同学给予的帮助。

参考文献:

[1]     SNIA. Cloud Data Management Interface(CDMI). http://cdmi.sniacloud.com.

[2]     AMAZON-S3. Amazon Simple Storage Service (Amazon S3). http://www.amazon.com/s3.

[3]     S. Balasubramaniam, Benjamin C. Pierce, What is a File Synchronizer?; International Conference on Mobile Computing and Networking, Page 98

[4]     Torsten Suel, Patrick Noel, Dimitre Threndafilov, Improved File Synchronization Techniques for Maintaining Large Replicated Collections over Slow Networks; Data Engineering, 2004. Proceedings. 20th International Conference on, Page 153

[5]     Utku Irmak, Svilen Mihaylov, Torsten Suel, Improved Single-Round Protocols for Remote File Synchronization; INFOCOM 2005. 24th Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings IEEE, Page 1665

[6]     Hao Yan, Utku Irmak, Torsten Suel, Algorithms for Low-Latency Remote File Synchronization; The 27th Conference on Computer Communications. IEEE , IEEE INFOCOM 2008, Page 655

[7]     ZHAN Ying, SUN Yong, Cloud Storage Management Technology;2009 Second International Conference on Information and Computing Science, Page 309

[8]     Jiabin Deng, JuanLi Hu, Anthony Chak Ming LIU, Juebo Wu, Research and Application of Cloud Storage; Intelligent Systems and Applications (ISA), 2010 2nd International Workshop on

[9]     张会健, 网络存储中的快照技术;科技浪潮,2009年3月,总第73期,第27页

[10]     何宇平, 李涛, 胡晓琴, 彭勇, 马晓旭, 应用于远程文件备份系统的关键技术;计算机应用研究,2009年1月,第26卷,第361页

[11]     周可, 云存储技术及应用;中兴通讯技术,2010年8月,第16卷,第24页

 

 

作者联系信息:

 

1.邵宪津; 2.北京市朝阳区中国传媒大学45号501实验室(100024); 3.sxjin_8809@139.com。