引言
现代企业在发展过程中不仅积累了大量的电子文档,并且还在加速不断产生新的文档。这些文档涉及企业的核心技术资产和敏感信息,需要安全可靠的存放。长期以来,由于缺少有效的管理模式和技术手段,文档被分散存放在个人PC机上,产生了各种信息安全问题和一致性问题。有些企业配合OA系统的应用,采用了如FTP、NAS、SAN等文件服务器形式,但是部署复杂、维护不便,有的成本过于昂贵,容量扩充、备份恢复等需要大量人工干预,容易发生操作失误导致文档数据损失。特别是系统管理员具有超级权限,能够轻易访问不同用户的文档,对文档的安全性和保密性构成威胁。这些问题已成为企业的一块心病,制约着企业信息化的发展。
目前,“云存储”技术提供了一种较好的解决方案,变分散存储为集中管理,同时提供高可用性、高可靠性以及弹性扩容能力,把用户从各管各的文档、各维护各的服务器的模式中解放出来,有效满足了企业文档的安全存储要求。出于安全考虑,具有传统网络安全边界的私有云存储成为众多企业关注的焦点。目前商业化的私有云存储建设成本较高,不易为普通企业所承受。另外,企业已经为IT基础设施建设做了大量的投入,弃之不用而另起炉灶难以为企业接受,也不符合绿色环保和节约资源的理念。如何充分利用企业现有IT设施建立企业的私有云存储服务,满足企业文档集中存储和集中管理的要求,打破私有云建设的成本壁垒,保护企业投资、平滑过渡,是云计算发展亟待解决的问题。
广州国迈科技有限公司研发的魅云文档安全存储系统,具有私有云存储的基本特征,既可以在专用服务器上部署,也可以在企业现有IT设施上部署。通过把现有的专用存储设备、服务器存储资源甚至个人PC机存储资源虚拟化成一个存储池,实现了统一的存储资源调配、大容量存储、高性能访问、数据冗余备份恢复、容量弹性扩充、存储位置透明、身份认证和文档权限管理等关键功能。系统提供了标准化的文件访问接口,无缝支持企业现有的各种应用系统,其异地备份和异地共享的能力,满足企业IT设施的多地域分布的需要。
1 系统设计目标
系统设计的目标如下:
1)高可靠、高可用、良好的容错性。设备故障处置作为系统的一种常态进行设计 。通过必要的实时监控、错误侦测和容错机制,当服务器或存储介质无法工作时,能够及时检测和快速恢复,保证重要数据的可用性。
2)安全性和权限管理。用户访问严格受控,系统在设计上能够控制操作系统管理员无法访问未授权文档。另外,从单台服务器中不能获得一个完整文档。
3)支持大容量存储要求和动态扩容。
4)易用性。不对用户现有使用模式产生影响,用户不用改变使用习惯,应用程序不需要修改。系统的维护简单,设备故障恢复和容量扩充等工作具备一定的自动化能力。
5)具备较高的并发能力和吞吐量。
2 系统的存储模型
系统采用“星型结构”,由单个中心控制节点服务器和多个存储节点服务器组成。存储节点根据所处机架、地域、虚拟网段、安全区等不同因素在逻辑上划归为不同的簇,簇内节点以局网连接为典型连接方式,不同的簇可能处于不同的机架、不同的网段或不同的地域。控制节点负责元数据的维护、存储节点监控、更新数据节点列表、响应客户端请求、负载均衡、故障恢复、存储策略等。存储节点负责文档的数据存储。客户端与控制节点之间只进行元数据的传输;客户端和数据节点之间直接传输文档数据;存储节点之间采用接力传输方式传输文档数据和元数据指令;存储节点和控制节点之间传输元数据和指令数据。每个文档被分成若干等长的数据块,数据块被分布存放在簇中的不同存储节点上,每个数据块的副本则分布存放到不同簇的节点上。系统总体结构如图1所示。
图1 系统总体结构
2.1 存储模型的工作原理
当客户端向控制节点提交写文档操作请求时,控制节点将根据客户端所处位置、数据块数量、存储节点的状态参数等,应用哈希算法进行数据块和数据块副本的存储决策,生成数据块的存储节点链表,并将此表发送给客户端。客户端和表中的第一个簇的各个存储节点通信,向其发送数据块数据和节点链表数据。存储节点一方面负责在本地存放数据块,同时负责将数据块复制后发送给链表中的下一个存储节点,直至链表的下一个节点为空。存储节点正确完成一个块的存储时,把块的编号和存储路径等元数据发送给控制节点。
当客户端提交读请求时,控制节点把离客户端最近的簇的存储节点放在链表的第一节点位置,并将所有的元数据信息一次性发送给客户端。客户端根据元数据信息并发访问存储节点,在客户端动态进行文档的组装,最后形成完整的文档。
2.2 核心元数据管理
系统元数据是存储系统的核心数据结构,描述了所有存储文档的相关信息,由目录结构、文件映射、数据块映射构成,是客户端目录结构的完整反映。文件映射包含了文件名称和数据块列表的对应关系,数据块映射包含了数据块名称和存储节点以及存储路径的对应关系。客户端访问文件时,应提交完整的文件路径。控制节点通过路径分析,查找到数据块的映射,并返回给客户端。由于元数据总量不大,为提高元数据的访问速度,把整个元数据装入服务器内存。
为保证元数据的可靠性,系统定期持久化保存元数据的数据文件,并在日志文件中记录对元数据的修改操作。当控制节点进行故障恢复时,首先从数据文件中恢复出最后的元数据,然后执行日志中的每条记录,使元数据恢复到最新的状态。
2.3 文档数据存储原理
为保证文档数据存储的一致性,防止多个客户端同时对一个文档修改,系统采用了租约的控制方式。客户端在写访问(包括创建)某个文档时,首先向控制节点申请获得该文档的租约,每个文档只有一个租约。在租约期结束前,客户端可以做文档的修改操作,一旦租约到期,客户端或者申请租约的更新,或者视为放弃租约,由控制节点收回。
系统采用流水线式的写入方式配合租约来保证多个副本写入的一致性。如前面所述,控制节点生成存储节点链表,该链表和文档的租约相关联,每个节点负责本地的写入并且将副本复制转发给链表中的下一个存储节点,直至最后一个节点。确认信息则按照链表的逆向顺序发送,当最后一个节点完成存储操作时,向控制节点发送数据映射记录,并向链表中的前一个节点发送确认信息,当第一个节点收到后续节点的确认信息时,客户端的写入调用正确返回,客户端通知控制节点完成写操作。如果中间环节发生写入错误时,客户端调用错误返回,客户端通知控制节点清除与此文档租约相关的映射记录,并通知存储节点删除相关数据块。如果租约到期而未收到客户端的更新请求,控制节点认为客户端可能发生了问题,将检查与租约相关的映射记录,按照操作失败方式进行处理。
系统采用创建新数据块、最后删除旧数据块的方式进行文档的修改,使得数据一致性处理变得相对简单。对企业应用而言,绝大多数文档都是创建后存储而不修改,因此复杂的修改操作对系统的性能影响不会太大。数据块大小应选取一个较为平衡的值,保证每个副本的创建和写入时耗费低、出错率低、成功率高。
为保证文档数据的正确性,系统采用了数据校验的方法,即对每个数据块计算校验值,将校验值和数据块一起存放,当数据传输时重新计算校验值,通过比对确定是否发生了数据错误。当存储节点进行故障恢复时,也通过校验值的计算确定是否发生数据错误,从而决定是否执行数据块的副本恢复。
控制节点实时监控存储节点的状态,当某一数据块的副本数量低于一定值时,控制节点将按照策略启动恢复机制,重新选择副本存放的节点,并发送恢复命令给数据源存储节点。
2.4 数据块的存储策略
控制节点综合计算存储节点的IO性能、存储容量、网络带宽、CPU负载、虚拟网络划分等因素决定数据块的存储策略,包括簇的构成、副本的存放位置等。一个簇通常由处于同一机架上的若干服务器构成,或者一个虚拟局网内的服务器构成。不同机架或位于异地的服务器通常处于不同的簇中。簇中的服务器间具有相对较高的网络带宽连接,而客户端往往和某一个簇具有较为直接的网络连接关系。系统尽可能保证重要的文档能够在一个簇发生全故障时,仍然有较大的概率能够从其他簇上恢复出整个文档。
存储节点向控制节点发送心跳信息保持联系。心跳信息包含了存储节点的各种参数数据,如当前的存储容量、10统计、CPU性能和占用情况、内存占用、网络负载等。控制节点根据这些数据,动态调整存储节点的存储优先级,并维护簇队列和簇内服务器队列。当客户端申请创建文件时,控制节点首先选择和客户端最近的簇作为第一个簇,并将副本尽可能分布到不同地域的簇上,然后根据哈希算法把不同的数据块分布到簇内服务器队列的不同服务器上。
2.5 节点故障的恢复和动态扩容
如果控制节点发现存储节点的心跳超时,它有两种做法:一是报告管理员进行人工干预,二是启动自动恢复程序。因为服务器故障以网络中断为多,而真正发生硬盘损坏的情形较少,通过人工干预可以减少耗时的自动恢复过程发生。一旦控制节点检测到存储节点恢复心跳,它将发送元数据检查指令,要求存储节点检查本地所有数据块的元数据信息和数据块数据的正确性。控制节点根据存储节点的检查报告,对比本地的元数据信息决定是否对该存储节点进行数据块的恢复操作。
如果人工确定一台服务器发生了故障,可以通过控制台强制控制节点启动存储节点的减程序。控制节点分析该存储节点上的数据块元数据,找到所有数据块的源存储节点,发送增加数据块副本的指令,使受到影响的数据块副本数量恢复到故障前的水平。
如果控制节点发现了一个新的心跳信息不在本地的存储节点列表中,则将其作为一个新的存储节点加入到队列中,启动存储节点的加程序,完成扩容。任何一台服务器或PC机只要运行存储节点软件,就可以成为一个存储节点。存储节点软件可以收集和统计本机的运行状态,由控制节点计算出合适的存储策略,在不影响或少影响本机其他应用程序的前提下,尽量发挥其计算和存储能力。
2.6 客户端工作原理
客户端访问文档时,一次性从控制节点获得完整的元数据信息,避免反复交互。客户端利用完整的元数据信息并发访问信息给多台存储节点服务器,并完成文档的动态组装,实现高性能的文件读取访问。为减少写操作失败对应用的影响,客户端缓存完整的文档数据,并负责透明的重写操作。通过拦截用户频繁的改写操作,减少对服务器的写操作。客户端分析写操作所在数据块位置,可以发出单个数据块而不是整个文档的写请求,有效减少了存储节点数据处理量和传输量。客户端支持传输数据的校验,当发现数据错误时,自动请求重发。如果判断存储节点出现故障时,客户端会自动选择另一个服务器副本,无需向控制节点请求,使客户端表现出良好的响应性能。
2.7 存储模型的特点
数据流和控制流分离,降低了控制节点的负载,避免了控制节点成为系统的瓶颈。控制节点可以采用比较成熟的热备份方式,防止出现单点故障。单一中心的体系结构使系统实现相对简单高效。
文件数据分布较为彻底。文档被划分成不同的数据块,数据块存放在不同的服务器上,提高了并发访问性能以及成功恢复的概率,也阻止了从单台设备对完整文档的访问,降低了系统管理员随意访问文档的可能性。客户端和多个存储节点之间实现并发传输操作,提高了系统的吞吐能力。
系统实现了存储和访问的负载均衡,控制节点实时探查存储节点的状态参数,集中控制数据的分布策略,保证数据存储的均衡和网络访问的均衡。客户端在读取文档时总是先访问跳数最少的一个簇,并从中恢复一个完整的文档,具有较高的访问速度。存储策略保证了各种廉价的服务器和普通的PC机也能够有效地成为存储系统的一部分,而不影响驻留其中的各种应用。
存储容量动态扩充,存储节点可以随时增加,控制节点自动发现、自动调整,无需用户的干预,对客户端影响很小。具备高容错能力,单个存储节点故障和一个簇故障都不会影响文档数据的完整性恢复。控制节点对存储节点的动态探查,可及时发现存储节点故障,执行恢复策略。
3 权限管理
系统面向企业的文档存储安全需求,实现了严格的权限管理机制。首先,用户、管理员、审计员的权限相互独立,特别是管理员(包括操作系统管理员)没有察看用户文件的权限,提高了文档的保密性。其次,通过预先强制设定的“我的空间、共享空间、向他人共享空间、他人向我共享空间等类型根目录,方便用户直接进行文档的私密存储和共享操作。在此基础上可快速灵活建立起部门内部的文件共享、部门之间的文件共享等目录,满足大多数文件存储管理需要。第三,系统支持用户名口令、证书验证和指纹验证登录,与现有认证系统易于集成。
4 应用接口
按照云存储的要求,系统提供了标准的文件操作接口,如NFS、POSIX等,可以和绝大多数应用系统无缝集成,对用户现有模式没有影响,特别是实现了企业最常用的文件服务器接口。当用户使用Windows操作系统时,只要正确登录系统,就能在资源管理中看到前述的4个目录。用户可以立即使用,也可以在其中创建新的共享目录,并赋予更复杂的权限划分。所有操作和本机操作完全一致,如拷贝、删除、创建文件、创建目录、拖放、粘贴等,用户感觉无差异。
5 结语
文中描述了魅云分布式文档安全存储系统的存储设计原理。它结合了云存储系统的设计要求,参考了国内外分布式存储系统的设计思想,面向国内企业IT的实际情况,实现了低成本、高可靠、高性能、大容量的分布式存储。单一中心的体系结构设计清晰简明,通过控制流和数据流的分离,避免出现数据访问的瓶颈。文档分块、分布式存储和冗余副本存储,实现了高可靠性和高性能。为保证多个数据副本的存储一致性,引入了流水线式的副本存储策略和文档租约机制。存储节点和控制节点之间的心跳提供存储节点的动态扩容、故障探查、故障恢复、负载均衡、存储策略等功能的实现基础。簇逻辑的引入,保证了客户端的高性能访问和更强的容灾能力。内置强制的权限管理机制为用户直接使用系统提供了强有力的安全保障。标准化的访问接口支持和用户现有应用系统的无缝集成。
通过多个用户的实际使用,反映出系统提供的大容量存储数据的安全性、可靠性和高性能可以有效解决企业文档存储的安全问题,具有较强的实用性。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:面向企业文档安全存储的分布式文件系统
本文网址:http://www.toberp.com/html/consultation/1083953360.html