云存储关键技术研究

2018-04-03 06:05张文锦汪金虎蓝芳萍钱振江
常熟理工学院学报 2018年2期
关键词:客户机存储系统客户端

张文锦,汪金虎,蓝芳萍,钱振江

(常熟理工学院 计算机科学与工程学院,江苏 常熟 215500)

人们从迈入21世纪开始,就进入了信息社会时代,网络数据化和信息化把“信息”这个词逐渐推到一个至关重要的地位. 与此同时,信息的数据量呈指数级增长,信息化时期的典型特征就是大数据[1-2]. 互联网专家学者指出,将来的时代将不再是IT(Information Technology)时代,而是DT(Data Technology)的天下,可见大数据的重要性. 然而庞大的数据量需要相应的存储技术作为支撑.随着个人、企业的数据不断增长,本地磁盘已经远远不能满足人们的需要. 这些数据往往呈现数据量大、使用频率较低、长期保存、多人共享、需要备份和版本控制等多个特点[3-4],所以云存储系统应运而生.

1 云存储系统的架构

云存储系统的架构模式采用B/S架构模式,架构模型如图1所示.

服务器是整个系统的控制中心,具有组织架构管理、用户管理、用户组群管理、用户访问控制及文件存储、版本控制、文件分享等功能. 人们可以方便地使用客户端浏览器享受云存储提供的服务.管理组织架构,用户和文件访问控制等信息由数据库服务器保存,在数据库服务器中建立虚拟文件目录,用户访问系统时只能看到自己有权访问的文件[2].

图1 云存储系统的架构模型

2 云存储系统实现的关键技术

2.1 文件断点续传

文件的上传下载可能不是一次性完成的,当文件非常大的时候,可能因为网络故障或者计算机系统软件问题导致传输失败,为此在下一次连接服务器的时候不是重新上传整个文件而是能够记录上次上传的位置,从断点开始继续上传文件.

图2 文件断点续传原理

图3 断点上传算法流程

断点实现的思路如图2所示,即将文件进行分片.传输之前告知服务器当前需要下载第一个切片,然后从服务器下载数据,最后拼接文件.

断点上传算法流程如下:

(1)分割文件,按照规定大小(一个单元)将文件分割为若干个文件块;

(2)连接服务器,提交给服务器待传输文件的属性数据,包含文件分块大小和文件块总数. 服务端成功接收到待上传文件信息并返回给客户机正确应答后转第3步,否则转第4步;

(3)客户端开始传输文件,服务器接收文件,每成功接收一个数据块便做一个标记. 传输过程中遇到中断,服务器停止接收文件,并保存传输数据现场转第5步,否则转第6步;

(4)客户端再次发送文件上传请求;

(5)客户端再次发起上传请求,服务器根据已经下载的文件块标记,返回文件块上传的起始数据位置. 客户端接收成功后转到第3步;

(6)全部文件块传输成功,拼接文件并保存到服务器.整个流程如图3所示.

2.2 文件夹和文件访问权限控制

为了实现严格的文件夹和文件权限控制,关键是对文件夹和文件做好权限标记,我们在系统中设计了文件记录和文件夹存储结构,如图4所示.

文件记录和文件夹存储结构的前端是文件夹和文件的记录信息,最后3个字段主要用来实现权限控制. 系统把权限分为3个类别,包括所有者、同组用户和不同组的其他用户.

当用户访问云存储系统的时候,系统根据用户的类型和用户所要访问的文件和文件夹的权限向用户显示和提供数据文件.

2.3 信息安全传输

HTTP是Web开发经常使用的协议,但使用HTTP协议传输的信息都是不经过加密保护的,如果有人能监听到客户机和服务器的会话,那么数据就将原原本本呈现给别人. 毫无疑问,这样的过程就像是邮寄明信片一样,只要经手的人都能看到所有的信息[5-6]. 正因为HTTP的不安全性才诞生了HTTPS.

HTTPS是以安全为主要目的的网络传输协议,它实际就是HTTP和SSL/TLS组合,即在初始的HTTP协议上增加加密保护模块. HTTPS协议传输的整个过程如图5所示.

信息安全传输的具体流程如下:

(1)客户机发出HTTPS请求

(2)服务端的配置

使用HTTPS协议首先需要有数字证书,数字证书能够通过自己制作而获取,也能够通过向组织申请获得证书.

(3)证书传送

实际上证书包括了很多信息,除了包括公钥信息以外还有持有者真实身份信息,颁发证书机构信息和证书到期时间信息等.访问之前,服务器会把证书传输给客户机.

(4)客户机证书解析

图4 文件记录结构和文件夹存储结构

客户端在接收到证书以后,第一步是验证证书信息的有效性,包括证书颁发机构、到期时间等信息,假如发现证书信息存在问题,就会跳出一个对话框,提示信息异常.反之证书信息正常的话,使用数字就生成一个随机密码,密码用于加密接下来需要传输的数据.

图5 HTTPS协议传输过程

(5)传送加密信息

这个过程需要传送的加密信息就是上述的随机密码,能够让服务器知道这个随机密码的值,方便以后通信过程中用随机密码加密解密数据.当然这个随机密码不能直接明文传输过去,需要使用证书的公钥进行加密,然后传输给服务端.

(6)服务端解密信息

服务端接受到客户端传递过来的随机密码的加密密文,使用自己的私钥对该密文进行解密,就可以获得这个随机密码值.

(7)传输加密后的信息

安全传输的准备工作全部完成后,接下来是传输数据.要传输的数据首先用这个随机密码进行对称加密,然后发送这些被加密保护过的数据.

(8)客户端解密信息

客户端接收到服务器端传递过来的密文数据,使用上面生成的随机密码对称解密.当客户机需要传递给服务器数据时还是用这个随机密码加密.这样的数据传输过程即使被第三方监听到,也无法获取传输信息的真实含义[7].

2.4 文件极速上传

局域网内部文件传输速率已经是一个相当高的量级,本文所述的极速上传的概念对传输速率而言,无论是几个MB甚至几个GB都能在短暂的几秒钟时间内上传到服务器.

具体原理是:在局域网内部正常带宽的环境下,如果是一个很小的文件,那么直接上传就是急速上传.再分析一下大文件,超大类型文件往往是高清电影、软件安装包、系统镜像或者内部共享资料等,这类文件的特点是公共性很高,大部分用户都会用到.那么再做一个推测,这类文件可能被多个用户上传、并多次上传,对于服务器来说,服务器只需要一个副本,那么实现的关键是,只要文件上传的时候能判断文件是否已经存储,如果已经存储就直接在数据库为用户文件信息创建一条文件记录,并赋予它文件真实存储路径.

对文件进行唯一标识的方法可以采用MD5算法.MD5是一种数据摘要算法,能将任何长度的数据信息转化为固定长度(128位)的字符串,并且不同的字符串计算出来的MD5值也会不同.MD5碰撞的可能也是存在的(即不同字符串计算产生的MD5值相同),但这个碰撞发生的概率相当小.文件经过MD5算法生成的字符串便是文件的唯一标识.

急速上传算法流程如下:

(1)待上传文件在客户端用JS脚本生成MD5摘要值,并把MD5值提交到服务器,根据这个散列值查询服务器上有没有这个文件,若存在则转第3步,若不存在则转第2步;

(2)返回给用户信息,然后上传文件,上传成功以后保存MD5值到数据库中;

(3)在数据库中生成一条用户文件记录,并把文件正式存储路径保存到该条记录.返回给客户端上传成功的信息.

算法流程图如图6所示.

图6 急速上传算法流程

2.5 高效率增量式文件同步实现

在云存储的实例中,有这样一种情况,最原始的状态服务器存储着一个文件FileA,客户机1和客户机2都有这个文件的副本,并且内容和服务器上的完全一致,客户机1的使用者在使用过程中,因为工作需要修改了FileA文件,并想要把这个修改同步到服务器.云存储系统中常见这样的数据同步问题,常规思路比较简单,直接删除服务器上面的文件FileA,然后直接从客户机1获取整个更新完成后的文件.这个思路简单易实现,但是应该注意到一个问题:假设这个文件很大,比如1 GB甚至更大,然而这个文件被修改的部分只有仅仅的几K大小,如果为了几K的修改,同步时需要下载整个文件的话,无疑非常浪费带宽,同时也降低了同步的效率.

解决上述问题的核心就是将文件分块处理.每一个文件块就是一个单独的部分,单独处理更新部分,所以开始的时候要求对文件约定一个统一的文件块大小.然后按照规定的文件块大小把文件等分成多个文件块,接下来每个文件块就是一个单独的实体.将文件拆分成文件块以后,只更新变化的部分.

具体实例分析:客户端1按文件块要求大小把这个待更新的文件FileA分割成若干个文件块,然后分别计算出每块的MD5摘要和Alder32校验和,最后一个分组数据长度不够一个文件块大小的不做计算. 然后,客户端把这些校验数据按照顺序发送给服务器,其中还要包括最后不满规定大小的部分数据.

图7 高效率增量式文件同步方法

如图7所示,服务器也做同样的工作,把服务端保存的文件FileA从头部开始,按照约定的文件块大小分块,分别计算出Alder32校验码,然后与客户端传输过来的校验码序列进行比较,若Alder32校验码是不相同的,就可以认为这个文件块所包含的内容是不一致的,然后将文件往后移动一个字节大小并再次分割文件形成文件块,再次计算出每个文件块的Alder32校验和,并与客户端发送过来的校验码对比,不断重复此操作,直至找到Alder32校验和相同,然后计算这段文件块的MD5值并与从客户端接收的MD5值进行比较,若不同则再次往后移动一个字节重复计算Alder32校验和的比较操作;反之,则得到一个文件块与客户端文件块一致(忽略这个数据块).所有操作全部完成以后,按文件的顺序发送给客户端不能找到的文件块信息,找到的部分用MD5和Alder32取代原来的数据块属性信息,还要加上不足数据块大小的内容.

3 结束语

本文介绍了云存储系统的应用背景,描述了网络云存储的系统架构,详细阐述实现云存储系统的关键技术,包括文件断点续传、文件夹和文件访问权限控制、信息安全传输、文件极速上传和高性能增量式文件同步.

随着云存储的应用场合日益扩大,伴随而来的快速在线查询、云端安全访问等是未来努力的方向.

参考文献:

[1]郭平,王可,罗阿理,等.大数据分析中的计算智能研究现状与展望[J].软件学报,2015,26(11):3010-3025.

[2]李学龙,龚海刚.大数据系统综述[J].中国科学:信息科学,2015,45(1):1-44.

[3]傅颖勋,罗圣美,舒继武.一种云存储环境下的安全网盘系统[J].软件学报,2014,25(8):1831-1843.

[4]谭霜,贾焰,韩伟红.云存储中的数据完整性证明研究及进展[J].计算机学报,2015,38(1):164-177.

[5]刘雅辉,张铁赢,靳小龙,等.大数据时代的个人隐私保护[J].计算机研究与发展,2015,52(1):229-247.

[6]孟小峰,张啸剑.大数据隐私管理[J].计算机研究与发展,2015,52(2):265-281.

[7]黄刘生,田苗苗,黄河.大数据隐私保护密码技术研究综述[J].软件学报,2015,26(4):945-959.

猜你喜欢
客户机存储系统客户端
分布式存储系统在企业档案管理中的应用
如何看待传统媒体新闻客户端的“断舍离”?
天河超算存储系统在美创佳绩
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
一种基于STM32的具有断电保护机制的采集存储系统设计
瘦客户机:安全与便捷的选择
升腾瘦客户机借神码翱翔“云端”