刘天成,凌书平,罗 平
(1.湛江幼儿师范专科学校信息与科学系,湛江 524084;2.中国移动通信集团广东有限公司湛江分公司,湛江 524043)
现有政企OA系统普遍采用传统FTP文件存储方式。该方式存在存储容量受限、文件冗余存放、文件缺乏跨单位和跨系统共享能力等缺点,不适应在庞大规模的系统群使用。政企OA公文交换量快速上升,平台存储量快速增长,造成平台存储资源紧缺。政企OA系统里很多数据都是重复保存的,如果将重复数据所占用的空间节约下来,相同文件只保留一份,或只保留一份备份,则可节约大量存储空间。因此,在存储资源紧缺的情况下平台存储改造势在必行。
为解决小文件过多所造成的系统元数据过大的问题,文献[1]基于容器技术,提出了存储海量中小型文件分布式存储系统,该系统适用于超算环境下的各种渲染任务,但没提出针对多种存储兼容和控制冗余存储的解决方案。为解决云存储中数据存储冗余的问题,文献[2]提出了一种将完全备份与纠删码结合的策略,该策略能较好地节省存储空间并实现负载均衡。但文献没提出高并发和备份策略的具体实施代码方案。
为解决前述问题,本文对现有政企OA系统的应用系统、数据库系统和存储系统进行了优化,使得政企OA系统占用的存储资源大大减小。
目前政企OA产品体系主要是以单服务模式开发的,每家单位都有独立的应用服务层、数据库层和文件存储层。各家单位系统是独立部署、相互隔离的。为控制文件存储的冗余,技术方案需将这三层原本分离的结构统一起来,采取集中化模式加以优化,并基于此提出了地址转换兼容方案,方案结构如图1所示。
图1 结构优化方案
系统共分三层,每个层的优化方案如下:
(1)应用层。为兼容原有FTP访问,采用双地址存储方法,在保留原有FTP存储地址的基础上,增加了云存储地址。当存在云存储地址时,优先使用云存储地址访问,否则采用旧的FTP地址访问。
(2)数据库层。政企OA的数据库在原来基础上增加一列字段,用于存储新的地址。
(3)文件存储层。将旧文件迁移到云存储中。新文件统一采用新云存储方式。云存储支持冗余控制。
新旧文件系统兼容可采用指定兼容和自动兼容模式。指定兼容是指用系统的配置文件指定文件访问采用何种模式。由于系统已有大量历史数据,短期全部迁移不现实,不能采用指定单一访问模式。因此方案采用自动兼容模式,自动判断是否存在云存储地址。如有云存储地址,则优先采用云存储文件下载。自动兼容模式能有效提升系统的鲁棒性。具体实施如下:
(1)搭建FastDFS云存储文件服务中心
目前已有的较为成熟的商用开源云存储技术主要有HDFS,MongoDB,FastDFS,HBase等。在OA产品云平台上引入和部署FastDFS集群,能够使存储实现横向扩展,克服原来单台FTP服务器的服务瓶颈,并能提供良好的扩展能力,容灾能力,弹性存储能力。在整个集群中,Tracker服务器承担文件访问负载均衡管理,而Storage服务器负责文件数据存储管理。为了实现文件系统的容灾能力,Tracker集群和Storage集群分别使用省市两个不同的云平台主机和存储,确保某个云平台故障时,文件系统的高可用性。集群配置如下:
1)Tracker集群。政企OA等900多个应用服务通过访问FASTDFS的Tracker集群,获取存储的文件管理信息。Tracker集群部署了六台应用服务器,能确保访问的稳定性和吞吐量。
2)Storage集群。Storage集群由多组卷组成,每组卷内部署两台相同的服务主机。两台服务主机互为备份,取代了原有的NBU备份方式。同时,卷内两台主机同时对外提供服务,备份资源也没有浪费,吞吐量为原有的两倍。
(2)增加应用系统参数配置,支持应用系统三种存储模式
由于OA系统有成千家应用单位,约12 TB的数据需要从FTP文件系统迁移到云存储系统,同时需修改数据库的存储地址。目前政企OA使用的集群为本地UAP,文件迁移无法在短期内实现,需要一段较长的时间迁移。因此就要保证在过渡期间系统能够自动切换使用合适的下载方式。
为了支持系统的自动切换,OA系统设置了三种存储模式,分别为FTP,Route和DFS。这三种模式限定系统的访问方式,当系统处于Route模式下时,能够自动切换为优先从云存储下载;如无法下载,则从FTP下载。
1)FTP模式。文件数据仅从FTP服务器上传下载,适用于还未进行文件迁移的单位。
2)Route模式。文件数据优先从云存储集群下载,如无法下载,则从FTP服务器下载。文件数据同时上传到云存储服务器和FTP服务器。适用于处于文件迁移过渡期间的单位。
3)DFS模式。文件数据从云存储集群下载。文件仅上传到云存储服务器,不再上传到FTP服务器。
4)测试结果。系统通过压力测试脚本,在150个线程连接云存储系统的情况下,150个线程均能正常无出错下载文件。在互联网环境下测试超大附件下载,下载均速达到2MB/s,表明系统性能达到要求。系统调整应用系统代码,支持三种模式:FTP、Route和DFS。三种模式下,系统均正常运行。在Route模式下,当DFS没有文件,FTP有文件,或DFS有文件,而FTP没有文件时,均能正常从云存储下载文件。
文件系统支持批量文件下载,原有的方式为应用系统文件下载,这种方式下客户日常的文件导出数量较大,容易产生系统卡死问题。为解决该问题,系统使用延后下载模式,选择在系统空闲时实现文件下载。具体通过以下方式实现:
(1)开发延后批量下载模式
批量下载公文数量较多时,由于存储系统读写速度以及带宽的限制,容易造成服务器运行缓慢,影响其他用户正常使用的问题。为了实现高速的批量下载,同时不影响忙时其他用户的使用,采用延后至闲时批量下载模式。在该模式下用户首先向应用服务器提出批量下载文件请求,此时应用服务器并没有向云存储系统提出批量下载文件请求,而是先设定定时,并通知用户定时任务已设定。定时时间到后应用服务器再向云存储系统请求下载文件,应用服务器接收到文件后再通知用户下载。
(2)开发批量下载脚本
在原有FTP存储的方式下,按照对应单位的文件夹,以及文件夹下对应的日期实现批量文件导出功能。但改为云存储模式以后,不同单位、不同时间的文件混放在一起,无法通过复制文件夹的方式批量拷贝导出。为了解决批量文件导出的问题,在前端增加了生成批量导出文件列表功能。当用户选择区间批量下载时,应用系统搜索符合条件的所有文件名称、类型、所属单位、附件列表等资料,系统直接生成计划任务,调用批量下载脚本批量导出文件。批量下载脚本执行时间设定为系统闲时8:00pm—8:00am,采用排队方式执行,避免因资源相互竞争而导致死锁问题。
在OA系统前端分别对10个不同单位的100份文件进行导出测试。系统生成10个计划任务,在8:00pm开始顺序执行。从统计结果来看,系统批量导出时间平均为463 s,最短180 s,最长670 s。
云文件存储地址可采用“新表关联”和“增加列”两种方式,通过对两种查找云文件存储地址的方案进行性能对比,可知“增加列”方式在编辑多条地址时速度较快。为提高数据库并发性能,本文采用了“增加列”的方式来优化数据库系统。
为从FTP的存储平滑地切换到云文档的存储,在文件记录中同时记录云存储的地址。当文件的两个地址都存在时,优先选择FastDFS;当仅有FTP地址时,维持原有访问方式,用于兼容原有的FTP访问方式,确保数据在迁移过程中无缝衔接。
除在数据库表中增加云存储的地址以外,对文件访问模块包进行替换升级,支持多种访问模式,自动切换使用。新增一个FileUtil的访问类封装文件的上传下载,该类调用到封装FTP访问的类和封装云盘访问的类。然后再根据地址的情况进行访问控制,如FastDFS地址为空,则访问FTP上的文件;如果FastDFS地址非空,则优先访问FastDFS列的地址。
由于云存储存放地址逻辑与FTP不相同,需要将文件从FTP迁移到云存储上。此外,各单位的文件数量差异较大,文件迁移时间不同。为保证客户对数据的正常使用,设定在每天00:00am—7:00am时段进行数据迁移。每天早上对迁移的单位进行统计,并对无法迁移的文件进行处理,之后再重新上传。所有文件全部迁移成功后,修改文件访问模式为DFS模式,文件的上传和下载均采用云存储模式。
经实际迁移测试,从迁移一个月的数据来看,平均每小时文件迁移量达到2.3万份。
文件存储可考虑选择FastDFS,HDFS,MongoDB,MogileFS这几种模式,除FastDFS适合小文件存储外,其余模式均适合于文件较大且需要进行分块的情况。安装系统环境,测试了FastDFS和HDFS两种存储模式对文件的操作所用时间,对比情况见表1。
表1 FastDFS与HDFS存储模式的性能对比
对比可知,执行速度上FastDFS占优,因此可选择作为存储方案。
文件备份模式可采用NBU备份模式,确保文件系统故障时能及时恢复。但这种模式备份文件会占用较大空间,且备份不及时。鉴于FastDFS可以使用多副本模式,在备份的同时提供并发服务。因此,本文选择使用多副本模式的方案来实现存储系统的优化。
(1)增加FastDFS并发存储的Storage节点
对于文件系统来说,备份容灾是必不可少的功能。为了实现备份的同时能够对外提供文件服务,云存储集群采用两组Storage,每组Storage保持两台Storage服务器作为互备份,从而达到容灾目的,同时能够对外提供服务。两组Storage采用不同的group_name,同时接入Tracker集群,并且同组Storage保持磁盘容量一致。
(2)调整节点同步策略,缩短延迟时间
为保证备份的及时性和有效性,避免出现单点故障时文件丢失,可将同组Storage的两个节点分别使用物理上隔离的存储节点和虚机节点,确保当物理服务器单点故障时系统可用。同时,调整了系统同步参数,设置文件传输后,立即进行同步。
云存储集群的参数调整以后,两组Storage可同时对外服务,服务能力得到了双倍扩展。经忙时相同文件生成时间进行对比,平均文件同步时长为2 s。
为解决文件重复存储的问题,存储中冗余文件仅保留一份,采用FastDFS的DHT功能控制冗余问题。
FastDFS本身不具备对重复上传的单位文件去重的功能,但FastDHT作为一个高性能的分布式哈希系统却可以实现去重,它是基于键值对存储的,需要以BerkeleyDB作为数据存储的媒介,同时还需要依赖于libfastcommon。
处理方法:配置安装FastDHT服务器和BerkeleyDB,使用BerkeleyDB存放文件的md5值,通过md5值来判断文件是否重复。两组服务器设定使用DHT进行文件校验,并使用对应的DHT服务。配置使用DHT服务以后,每个Storage只存放一个文件,对重复的文件采用软链接的方式进行存储。使用BerkleyDB记录文件特征,相同的文件只保存一个副本。其余文件建立软链接指向这个副本,软链接类似Windows操作系统中的快捷方式。经过测试,每个相同文件即使使用不同文件名、修改时间,仍可以保持单副本保存。
经文件上传测试,相同文件只保留一个文件,其余文件变成软链接指向。软链接文件大小不到65byte。相同文件均变为软链接文件并指向同一实体文件。通过分布式文件系统对小文件读写、删除等操作的对比可知,使用FastDFS模式能达到较好的冗余控制效果。
以上优化措施实施以后,政企OA系统的文件存储空间的消耗速度明显变慢。同时,客户使用OA系统打开文件正文和下载附件、编辑保存正文和上传附件的速度体验较之前有较大提升。迁移完毕后,通过分析可知云存储系统的文件系统压缩率总体达到53.21%。完成措施后实现的社会效益如下:
原有的11.6 T存储空间被迁移到FastDFS存储模式运行后,通过后台数据计算得出文件重复率达80%,迁移完成后仅使用2.3 T存储,可盘活9.3 T存储。同时NBU备份也节约相同存储,总共可节约存储空间18.6 T;同时,采用FastDFS服务以后,由于文件访问吞吐量较之前提升一倍,可盘活低端存储4 T空间;综上所述,总共可盘活22.6 T存储资源,可节省几十万元投资成本。
云化存储采用集群方式和部署集中监控平台,存储系统故障率较FTP方式大大下降,巡检、监控和故障处理成本下降。FTP服务器出现资源不足,需要新建FTP服务器并做数据迁移,而采用FastDFS以后,只需增加新卷存储即可实现扩容,不需部署实施NBU备份策略设置及日常维护。单位发文后,若要调整文件内容,以往需要运维人员到FTP服务器后台操作处理。更改为云化存储后,只需在前台提供文件查询召回、替换功能,发文后处理方式由运维人员转交给客户维护人员即可实现。实现新方案后可大幅降低人力成本。
随着政企业务的不断增加,政企文件所占存储资源必将越来越庞大,为解决政企文件存储冗余等问题,节省存储资源,必须对原有的存储系统进行优化。
本文以双地址存储为基础,对政企OA文件存储系统进行了优化,优化后的系统兼容性强,能通过定时文件迁移使FTP存储顺利过渡到云存储,此外采用FastDFS的DHT功能较好地控制了存储冗余,使系统文件压缩率大大提高,有利于提高存储资源的利用率,节省企业成本。