校园私有云存储方案的探索
2015-12-02李基亮
张 峰, 李基亮
(1.中国地质大学(武汉)网络与教育技术中心,武汉 430074;2.上海爱数软件有限公司,上海 201112)
0 引 言
随着高校信息化的发展,产生了大量的电子资源,大多以文档、图片、视频类文件的形式而存在.除了有些成品的课件资源外,大部分资源存放在学校的FTP服务器、视频网站上、个人电脑或者邮箱附件中.这些有价值的文件资料从数字化校园共建共享角度来看,形成一个统一校园文档存储中心早已成为客观存在的需求.智能移动终端的出现彻底改变了存储的传统需求形式,如当前流行的云盘Dropbox、百度云、360云盘等,简单易用,可以实现移动访问和多设备互通,成为很多老师和学生保存自己的资料和交换大文件的工具[1].
但是对于数字化校园而言,仅仅是网盘的同步和共享是不够的.一方面是满足校园内的个体间的共享需求,另一方面是满足校内组织机构、研究团队、学术团体、教学组织等公共数字信息的海量文档资料的共建共享需求,特别是面向各种应用的资料整合存储和访问的权限需求——比如学校行政部门单位科室文件共享、版本控制等,校园图书电子图书应用整合与发布,优质课程视频应用整合与点播服务,校内报刊,期刊出版物等等.因此,需要有一个统一、可发布和安全的云存储解决方案.
通常使用的云盘或者网盘大部分是以公有云的服务形式提供,其API不提供个性化定制开发.它们无法满足校园的私有云存储既对师生个体开放,又有学校组织机构和灵活结盟(科研团队、社团)的安全整合需求,无法有效响应移动校园个性化存储需求.
在校园云存储的实践探索中,有两个关键点,首先是组织管理的灵活性问题.可以归纳为以下三类组织形态.
紧耦合组织:学校行政体系类似于企业的分层组织体系,存在着上下级交互、授权、资料汇总、部门内共享协作的使用模式.
松耦合组织:各个学院间相对独立,同时存在着校级资源共享和跨学院的合作,比如公共基础课的老师将资料共享给选修该课程的各级学生,各种交叉科研团队.
自由散状个体:教师和学生是一个个松散、自由组合的团体,他们是研究团队,也可能是社团成员,相互交织,存在校内或班内的共享.
其次是常用公有云盘,主要针对个人和小团队的使用场景,存在很大的不足.没有考虑单个共享百万字节级的资料被访问的场景,这一场景对于学校而言,是常见的.很多人能够访问到学校的、学院的、班级的、社团的以及他人的共享资料,其规模往往达到上万、十万甚至百万字节.而现有的网盘客户端,特别是个人电脑,如果是利用客户端选择部分文件夹同步到本地,云端数十万文件(且不说本地是否能够缓存得下),网络现状,同步时间,对用户而言,在文档没有同步时间分类的情况下,就会变得很有问题.这种体验对于用户而言是不可接受的.
因此,整个校园私有云存储需要考虑移动校园数字化下的各种应用需求,有足够的开放性和灵活性,结合用户访问权限,实现真正的校园内容云.
基于这样的认识,通过一年多的实践,本文提出了高校的个性化校园私有云存储方案,并加以探索.
1 私有云存储系统的整体设计
系统总体架构分为两大部分,服务器端、客户端(包括PC客户端和移动客户端),如图1总体部署架构.
图1 校园私有云存储总体架构
1.1 服务器端概述
整个服务器端后端分为四层:系统服务层、云存储层、云共享服务层、运营管理与文档门户服务层.其中:
①系统层,负责操作系统层的网络、存储、负载均衡等基本服务,在整个实践过程中,方案采用了Linux系统,经过适度定制和裁剪,满足云存储集群的需求.
②云存储层,负责整个服务器后端的集群管理、分布式存储,其中分布式存储采用Swift对象存储,确保了服务器端存储和管理解决的可扩展性,在整个云存储平台中,每个节点都是存储角色,最多3个管理角色.
(1)对于每个节点,都是状态无关的,所有管理数据都存放在分布式数据库系统里面,管理节点之间可以自动故障检测和切换.
(2)对于存储角色的节点,可以近似线性地动态扩展,也就是增加节点后,整体集群的性能、容量均会增加.
(3)所有文档对象数据都通过Swift推荐保留了3份副本在不同的区域.单一磁盘、节点损坏,不会对集群产生可用性影响,最高可用性可达99.999 9%.
③云共享服务层,服务运行在管理角色节点之上:
(1)用户数据、权限体系数据信息均存放在分布式数据库中,不会因为单个节点损坏导致应用元数据丢失;
(2)应用服务可以动态扩展,通过开放API,开发出单独的应用系统,这些第三方应用系统可以与集群独立.
④WEB文档服务
基于Nginx服务器,对外提供基于tornado的WEB服务,可以视为一个轻量级的客户端,通过开放API进行文档的管理和操作;
⑤系统与运营管理服务
基于Nginx服务器,对系统管理员提供集群管理和监控、用户组织和文档组织的运营状态监控管理;
⑥开放API服务(WebService)
云存储层和共享服务层均提供开放API,云存储层负责数据开放API接口,基于权限提供数据服务,云共享服务层的开放API提供用户、权限等信息.
1.2 客户端概述
客户端分为个人电脑客户端(Windows、Linux、Mac)和移动客户端(iOS、Android),客户端与服务器端均通过开放API,也就是服务器端提供的WebService与服务器端实现文件的访问、同步、缓存、权限和用户管理.
客户端的主要支持的特性包括:
①文件实时同步,确保本地的文件被同步到云端进行备份.
②历史版本,文件修改后在云端产生历史版本,可以随时回退或者查看历史版本对比.
③云端回收站,本地删除操作,在云端会产生垃圾数据.删除的文件可以按时间、分类进行展示,而且可以查找恢复.
④文件名快速定位与全文检索,通过PC客户端、移动客户端或者网页均可以检索到全文内容,或者通过文件名快速定位到指定的文件.
⑤权限配置(共享)、外链接等.
2 灵活的校园组织管理体系设计
2.1 用户组织结构与管理
为了满足校内三种不同的组织形式,系统采用以下设计方法:
①采用了灵活的多组织单元,每个组织单元相对独立,可以满足不同学院相对内聚的共享和管理需求;
②采用了权责分离和层级分层管理机制,系统管理员角色仅提供运维服务,授权给各组织的普通管理员进行分层管理,这样各个学院可以自主负责对组织结构的维护,包括导入用户、创建、管理用户,支持对用户进行空间配额;
③同一个人可以参与到多个不同组织单元或者分组,从而实现跨学院的共享.
④采用自定义文档库的模式,分层管理员可以自主创建文档库分类及入口,指派文档库的负责人,从而灵活的实现各个单位的不同文档管理方式.
⑤系统支持Windows域认证,也可以通过开放API实现与校园门户的统一身份认证.系统管理员可导入域用户及域组织结构,并可将域用户与本地用户进行统一管理,执行编辑、修改、删除等操作,且并不影响Windows域中的用户数据.提供域用户身份验证功能,并支持管理多个服务器的域用户.
通过上述设计,即可在系统中设计出灵活的组织形式:
①分学院组织单元,每个学院相对独立,把老师纳入到科室的行政层次体系;
②学院下的班级自由创建,学生可以自由加入到不同的班级;
③对于公共课老师,可以加入到多个学院组织,从而实现公共课的互通共享;
④公共资料管理者,比如图书馆或者网络中心的老师,可以加入到多个学院,实现跨学院的资料发布共享.
2.2 用户角色与权责分离
服务器端概述
系统管理员与普通管理员是权责分离的,原则上,系统是让系统管理员运营维护,也就是确保服务的可用性,而普通管理员和用户去决定谁能访问什么资料.在一般情况下,文档组织的管理可以交由普通管理员来负责.普通管理员创建的文档库和组织是系统管理员不能干预和调整的.确保权责分离,系统提供4种默认系统角色.
①系统管理员:系统的管理维护者,有系统权限,主要工作包括:
(1)用户组织管理:包括用户管理、层级部门管理、第三方认证与用户导入,包括为用户组织指派普通管理员;
(2)集群管理:包括集群节点管理、网络管理、集群配置、存储管理和集群监控;
(3)运营管理,包括在线用户监控、文件分类统计等.
②普通管理员:负责某个独立的或者分支组织的用户和文档管理,由系统管理员在创建用户组织时指派,主要工作包括:
(1)用户组织管理:包括用户管理、层级部门管理、第三方认证与用户导入,包括为用户组织指派普通管理员.
(2)文档组织管理:文档库类型、文档库的创建与维护,文档库所有者指派;
(3)普通管理员创建的文档库,系统管理员没有权限修改和调整,但是可以查看状态.
③普通用户:系统的普通使用者,无系统权限,无管理功能,具有以用户名为命名的个人文档库(用户文档库,类似个人云盘空间),可以在自己配额空间范围内创建不多于3个群组文档库.
④所有者:文档库(顶层的入口文件夹)、文件夹、文件都具有所有者,文件/夹可以具有多个管理者,所有者可以指派他人为共同管理者共同负责文件/夹的权限与共享管理.
(1)个人文档库的所有者是普通用户;
(2)群组文档库的所有者是群组的创建者(普通用户);
(3)自定义文档库的所有者由普通管理员在创建文档库后指派.
3 存储后端设计
系统后端是通过分布式集群存储DataEngine平台来保证高可用,DataEngine的出发点就是集群高可用,其逻辑结构如图2.
图2 云存储后端架构
对于DataEngine云存储平台,基于EInfoworks操作系统,既可以运行在标准X86服务器存储之上,也可以运行在自定义的ERockWocks硬件平台之上.EInfoworks操作系统的基础设施资源管理服务经过了相应的定制和优化.
在操作系统(EInfoworks)服务层之上,包括了统一服务于消息中间件、集群管理与监控系统、分布式对象存储系统和数据传输引擎等主要部件,其中
①EThrift:Enhanced Thrift统一服务框架,统一各种服务间的管理调度方式.
②EMQ:Enhanced Message Queue基于rabbitMQ,消息通知中间件,用于服务间的异步事件通知处理,比如存储节点的状态和消息通知.
③EGMS:Enhanced Cluster Management/Monitor System,集群管理与监控系统,定位于特定服务的中心管理,为各集群应用的管理中心,如集群节点管理、集群系统状态监控(包括节点,设备,网络等)、集群存储管理、集群更新管理、集群数据库管理、集群日志管理等等.
④ESwift:Enhanced Swift[2]分布式对象存储系统,属于全对称分布式架构,通过副本策略来保障数据的安全及高可用,提供ring策略来负载均衡.
⑤EGBase:集群数据库系统,为主备架构,通过主备同步冗余来保障数据的安全及高可用,提供主备读写分离策略来负载均衡.
⑥EGFS:分布式应用存储系统,基于ESwift和EGBase提供应用适配的存储访问层,内置多级缓存系统来应对高并发访问及热点数据的处理能力.
⑦EFAST:数据传输引擎,提供基于EGFS存储的文档访问协议,包括RestFul风格的EFSHttp标准协议API和protobuf封装的EFSP私有协议API.
通过服务器端的开放式WebService设计,确保了系统的开放性,可开放的接口包括文件读取、存储、列表、管理(创建、改名、删除)、权限配置、统计接口等等,满足第三方应用的整合需求,同时,系统的Windows客户端、Linux/MAC客户端、移动客户端(iOS、Android)都可以通过开放API来进行交互,统一接口.
服务器端的扩展性和高可用,通过集群负载均衡、故障切换服务、存储多副本来确保系统的服务可用性.其中基于Swift的ESwift,进行了改善和增强,包括:
①Swift服务挂掉后,不能自行恢复,需要人工干预.应用层通过集群管理对swift服务做了监控管理[3].
②Swift的配置或ring的应用,需要一台节点一台节点自行更新重启服务生效,没有统一的集群管理策略.针对Swift的管理封装了一层集群统一策略分发、统一配置修改等的管理[4].
③Swift的一致性策略不可配置,比如write几个副本才算成功,read几个副本才算成功,这个一致性策略swift不可配置.随着系统应用需求的变化,有时可能希望R+W>N,有时可能W≥||R≥1,在实践中,修改swift的proxy代码以支持所期望的一致性策略需求[5,6].
其中,系统还针对集群的管理和运营,增加了可视化的运营管理特性,包括集群状态、节点资源(CPU、内存、网络等)、连接数、在线人数进行了监控和统计分析,当集群发生潜在风险时,可以及时的预警和调整.
4 智能云数据的客户端技术
在整个实践中,客户端的体验是至关重要的,大部分的老师和学生日常还是使用个人电脑访问或者制作文档,采用了按需触发的技术,包括针对文件和文件夹的触发下载,我们称之为“智能云数据”.
进入云盘/网盘客户端,客户端会向服务器请求当前层级目录的文件/夹列表,同步服务器端的文件列表,包括大小、时间等属性,但是只显示虚拟的文件,这些文件在本地是空文件,当用户双击或者其他触发文件打开的操作时,文件才自动从服务器端下载到本地并打开.进入下级的文件夹也是同样的模式,请求列表,创建虚拟文件.
同时,为了改善体验,避免每次打开文件夹都需要从服务器返回结果后才显示,采用了异步方式,也就是已经触发过的文件夹,变化的条目(增加、修改、删除),客户端和服务器端在后台自动同步.对于用户而言,文件和文件夹的操作跟本地资源管理器的操作完全一致,不受网络影响.
触发下载采用了Windows应用程序钩子技术,当应用程序访问文件时,通过钩子程序,客户端程序获得打开文件路径,先阻塞应用程序的访问,并与服务器端快速同步,同步完成后,释放阻塞信号,从而实现应用程序对文件的正常访问.
5 应用场景与效果
随着整个系统的演化,在老师中进行小规模推广获得了好评,特别是按需触发下载的模式,而与按需触发模式最佳的应用场景则是桌面云,随着桌面云在高校的推广,在桌面云下面进行办公、电子课堂教学越来越方便,也更易于管理和维护.
在实践中,我们将客户端与思杰的桌面云进行了统一分发和绑定.思杰虚拟桌面或应用是采用微软的活动目录服务账号的认证授权方式,实现与云盘的账号统一绑定就需要开户信息和密码两者同步,通过开源的OpenStack实现开户接口服务和云存储服务流程化[7,8],使用校内虚拟桌面就有私有云盘存储服务,便利校内智能移动终端的Windows应用需要.
在桌面云工作的用户,在云盘客户端,文件夹、文件的访问都是按需触发下载,一般情况下,缓存会非常少,基本可以达到类似无盘的访问体验.
在行政管理部门,同一科室的工作人员,可以通过读、写、删的权限设置共享文档的权限,依版本控制多人编辑大大方便文稿起草的效率,也避免了单一误操作带来的不可恢复的后果发生.
6 结 语
校园私有云存储的核心定位是校园的文档资料云存储平台,通过认识学校自身组织、需求,借鉴通用公有云的友好界面,优化Swift对象存储后端,提供了智能云数据服务,实现与各种数字化校园应用的整合存储、共享与访问,受到使用师生的好评.后续工作将进一步提升用户体验,提高校内私有云资源与社会公有云及互联网资源的融合度,如大数据分析与智能推荐、开放资源搜索(校内、校外)、资源标签(分类、收藏、评论、推荐、评级等),推进校内开放个人电子图书馆建设,更好地服务校院教学科研文化建设.
[1] 周可,王桦,李春花.云存储技术及其应用[J].中兴通讯技术,2010,16(4):24-27.
[2] Openstack SWIFT[EB/OL].[2014-10-31].http://openstack.org/projects/storage.
[3] 葛江浩,刘磊,李小勇.OpenStack Swift关键技术分析与性能评测[J].微型电脑应用,2013,29(11):9-12.
[4] 蒋溢,孙雪涛,杨川.Swift云存储环境下基于I/O负载均衡的读取策略[J].计算机工程与设计,2013,34(9):3024-3027
[5] SWIFT3 middleware[EB/OL].[2014-10-31].http://swift.openstack.org/misc.html#module-swift.common.middleware.swift3.
[6] LIU Ying,VLASSOV V.NAVARRO L.Towards a Community Cloud Storage[C]//Advanced Information Networking and Applications(AINA),2014 IEEE28th International Conference on,On page(s):837-844
[7] 杨绍光,张云勇,陈清金,潘松柏.基于OpenStack的云计算IaaS管理平台研究[J].互联网天地,2013(3):11-15.
[8] 黄志成.开源云计算OpenStack在高校计算机机房中的应用研究[J].计算机与现代化,2013(3):208-210,215.