一、概述
云计算(cloud computing),是分布式计算技术的一种。云计算透过网络连接,将一切隐没在云端,普通用户不在关心数据存在哪里,不在关心数据的安全,不在关心应用程序是否需要升级,不在关心计算机病毒,这一切工作都由云计算中心负责解决,普通用户要做的就是选择自己喜爱的云服务商并购买自己需要的服务。云计算使普通用户有了享受高性能计算的机会,云计算中心几乎可能提供无限制的计算能力。
Google 提出的云计算强调的是云的重要性,因为Google从来都没有端,并且将GFS 抛出作为诱饵欲占主动;微软则强调“云”加“端”才是云计算,因为微软的视窗一直是“端”的霸主;VMware 则认为虚拟化是云计算的核心技术;Sun 公司则重提多年前他们说的老话“网络就是计算机”;Adobe则通过Flex 占领用户的眼球,使Flash Player 进军云计算;另外大量的服务器托管公司则将服务器的租用称为云计算。云存储是在云计算概念上延伸和发展出来的一个新的概念,是云存储重要的存储资源。它通过集群计算、网格计算和分布式计算等功能,透过网络,将不同类型的存储设备通过软件协同工作,对网络用户提供数据存储和访问功能。
二、云存储结构
云存储将云系统的存储资源进行统一整合管理,提供存储虚拟化功能,为用户提供一个统一的存储空间,具有集中存储、分布式扩展、安全认证、数据加密等方面的优点。在云状存储系统中,所有存储资源对使用者都是透明的,使用者不必知道存储设备的型号、接口和传输协议,也不必建立庞大的独立的数据备份系统和应急容灾系统,这些状态监控、维护、备份和应急容灾在云存储系统中都能够自动完成,已经作为云的很自然的一部分。云存储的结构如图1 所示。云存储结构模型由4 层组成。
1. 存储层
云存储设备可以是光纤通道存储设备,也可以是NAS 或者 iSCSI 等网络存储设备。在云中,存储设备数量庞大,通常会分布在不同的地方,通过广域网、互联网或者专用的光纤网络连接。通常需要提供一个统一的存储设备管理系统,实现物理存储设备的逻辑化和虚拟化管理。
2. 基础管理层
基础管理层是云存储核心的部分。该层通过集群存储、分布式存储和网格存储等技术,实现众多存储设备之间的协同工作,对外提供统一的存储访问服务。
3. 应用接口层
是由众多的第三方软硬件厂商提供的插件层。运营单位可以根据实际业务需要,利用应用接口快速开发满足需求的应用程序,如云存储的视频监控应用、视频点播应用、网络存储的硬盘、远程数据备份应用等。
4. 访问层
访问层提供给用户统一的访问登录接口。用户只有登录后,才可以使用云存储服务。不同的云存储系统提供的访问类型和访问手段不同,安全需求也会千差万别。用户可以根据自己的需求选择相应的服务。
三、云存储平台设计与实现
(一)设计方案论证比较
Google GFS Google 的数据存储与管理技术具有以下特点:基于大规模( 几千到上万节点) 通用PC 构建集群;集群节点同时提供存储与计算服务;基于不可靠硬件环境实现了高可靠的集群软件系统;用于处理与生成海量数据集的分布式计算模型高度抽象,在数据密集型业务中应用广泛;数据管理系统不支持完整的关系模型,结构简单而轻量。
Hadoop 实现了一个分布式文件系统,简称HDFS。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。HDFS 有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS 采用master/slave 架构。一个Namenod 以及一定数目的Datanode 组成一个HDFS 集群。在集群中,每一个节点包含一个Datanode。一个文件则分割成一个或多个block,由Datanode 集合提供存储block。HDFS 采用java 语言开发,这给运存储的部署带来很大的方便。
Dynamo 是亚马逊的key-value 模式的存储平台,可用性和扩展性都很好,性能也不错:读写访问中99.9% 的响应时间都在300ms 内。Dynamo 的可扩展性和可用性采用的都比较成熟的技术,数据分区采用改进的一致性哈希(consistent hashing) 方式进行复制,利用数据对象的版本化实现一致性。复制时因为更新产生的一致性问题的维护采取NRW 机制以及去中心化的复制同步协议。Dynamo 是完全去中心化的系统,人工管理工作很小。Dynamo 按分布式系统常用的哈希算法切分数据,分放在不同的node 上。Read 操作时,也是根据key 的哈希值寻找对应的node。Dynamo 使用了ConsistentHashing 算法,node 对应的不再是一个确定的hash 值,而是一个hash 值范围,key 的hash 值落在这个范围内,则顺时针沿ring 找,碰到的第一个node 即为所需。Dynamo 对Consistent Hashing 算法的改进在于:它放在环上作为一个node 的是一组机器(而不是memcached 把一台机器作为node),这一组机器是通过同步机制保证数据一致的。如果一个ring 内的访问量大了,则可以在两个node 间加入一个新node 以缓解压力,这时会影响到其后继node 的hash 范围,需要调整数据。假设一个ring 中原本只有node2、node3、node4,在加入新的node1 之后,原先从node2 查询的部分key 将改为从node1 查询,node1 和node2 中的数据就需要调整,主要是node1 从node2 中提取出属于它的数据,这样做需要选取性能压力不高的时候。Dynamo 的一个node 中一台机器建有一个Merkle Tree,当两台机器不一致时,通过这个tree 结构,可以快速定位不一致的Object 来恢复数据。Merkle Tree 又叫Hash Tree,它把key 分成几个range,每个range 算出一个hash 值,作为叶子,再一层层合并计算上去,这样,从root 开始比较hash 值,就可以快速找到哪几段range 中的hash 值变化了。
SAN 系统是在存储端构建存储的网络,将多个存储设备构成一个存储区域网络。前端的主机可以通过网络的方式访问后端的存储设备。而且,由于提供了块设备的访问方式,与前端操作系统无关。在SAN 连接方式上,可以有多种选择。一种选择是使用光纤网络,能够操作快速的光纤磁盘。另外一种选择是使用以太网,采取iSCSI 协议,能够运行在普通的局域网环境下。由于存储区域网络中的磁盘设备并没有与某一台主机绑定在一起,而是采用了非常灵活的结构,因此对于主机来说可以访问多个磁盘设备,从而能够获得性能的提升。SAN 系统与分布式文件系统例如Google File System并不是相互对立的系统,而是在构建集群系统的时候可供选择的两种方案。其中,在选择SAN 系统的时候,为了应用程序的读写,还需要为应用程序提供上层的语义接口,此时就需要在SAN 之上构建文件系统。而Google File System 正好是一个分布式的文件系统,因此能够建立在SAN 系统之上。总体来说,SAN 与分布式文件系统都可以提供类似的功能。
(二)使用hadoop 实现私有云存储
Hadoop 作为Google 的开源实现,其具有以下几个优点。可扩展,不论是存储的可扩展还是计算的可扩展都是Hadoop的设计根本。经济,框架可以运行在任何普通的PC 上。可靠,分布式文件系统的备份恢复机制以及MapReduce 的任务监控保证了分布式处理的可靠性。高效:分布式文件系统的高效数据交互实现以及MapReduce 结合LocalData 处理的模式,为高效处理海量的信息作了基础准备。HDFS 采用java 语言开发,因此很少存在兼容性问题。Hadoop 这些特点适合于企业实现私有云平台。
所设计的云存储系统的体系结构由web 客户端、Web 操作系统、云存储服务器、云存储中心五个部分构成。其结构如图2 所示。
1. 客户端
客户端机群是云存储系统的前台系统,客户端机器上只需要安装浏览器就能够满足用户访问需求。用户通过浏览器访问云存储系统,其他的服务都由云存储系统在后台自动。
2.Web 操作系统
这里的web 操作系统采用了eysOS。EyeOS 负责接收客户的访问请求,对客户的访问请求实施合法性验证。EyeOS中提供了大量的应用,允许用户根据自己的喜好下载和使用这些应用,实现系统的个性化配置,真正达到“一次配置,到处使用”。eysOS 同时提供用户文件的存取接口,通过该接口可以将文件存储到Hadoop 云端,同时可以通过它对文件进行各种操作。
3. 云存储服务器
云存储服务器由大量的集群“云端服务器”构成,同时为Hadoop 提供管理节点(NameNode),负责管理文件系统名称空间和控制外部客户机的访问。当然用户的数据也都是存储在这里的。
4. 云存储中心
云存储中心由众多的服务器构成Hadoop 的数据节点(DataNodes),负责保存文件数据,实现文件的分布式存储、负载平衡以及文件的容错控制。
其实施过程主要包括:
1. 新建系统Hadoop 用户
Hadoop 要求所有机器上hadoop 的部署目录结构要相同,并且都有一个相同的用户名的帐户,所以需要每台机器建一个同名的用户。在这4 台机器上建hadoop 用户并加入到root 组,密码:hadoop,默认路径/home/hadoop/。
2.SSH 设置
Hadoop 需要namenode 到datanode 的无密码SSH,所以需要设置namenode 到其他3 台datanode 的无密码公钥认证方式的SSH。设置完成后,测试一下namenode 到各个节点的SSH 链接,包括到本机,如果不需要输入密码就可以SSH 登录,说明设置成功了。
3. 安装JDK
到sun 网站下载JDK 安装包,并在每台机器的root 用户下面安装。安装软件会将JDK 自动安装到 /usr/java/jdk1.6.0_26 目录下。安装完成后再设置JDK 的环境变量。考虑到JDK 可能会有其他系统用户也会用到,建议将环境变量直接设置在/etc/profile 中。
4.Hadoop 集群配置
用hadoop 用户登录namenode, 在 namenode 上下载hadoop-0.20.2.tar.gz,将其解压到/home/hadoop/ 目录下,然后在 hadoop 下创建tmp 文件夹并把Hadoop 的安装路径添加到/etc/profile 中修改/etc/profile 文件( 配置 java环境变量的文件),设置HADOOP_HOME 和PATH 的路径,并使其有效。另外在datanode 上也需要如namenode 一样修改配置HADOOP_HOME 和PATH。
编辑Hadoop 配置文件。hadoop 配置文件在conf 目录下,包括:hadoop-env.sh: 配置JAVA_HOME 路径;core-site.xml:配置Common 组件的属性;hdfs-site.xml:配置HDFS组件的属性;mapred-site.xml:配置map-reduce 组件的属性;配置masters 文件,加入namenode 的ip 地址;配置slaves文件,加入所有datanode 的ip 地址等。
四、私有云中文件读写流程
读文件的流程:读一个文件用户首先需要从Hadoop 的数据节点把文件下载到本地,然后再由相应的软件打开显示给用户。读文件过程如下:(1)通过浏览器,用户访问运存储的Web 操作系统,双击想要访问的文件图标,使得eyeOS 向Hadoop 管理节点发出获取文件请求。(2)管理节点查找要访问的文件信息,透过数据节点把文件内容发送到客户端。(3)客户端下载数据节点传过来的文件块,并自动将这些块合并成一个文件。
(4)在Web 操作系统中,自动启动该文件关联的应用程序,显示文件内容。
写文件的流程:用户对文件进行修改,并提交保存请求,WEB 操作系统会将用户修改后的文件自动上传到云中。另外,用户也可以自主选择上传文件到云存储系统。(1)用户使用浏览器客户端,访问运存储的web 操作系统,自动启动相关联的程序修改并保存想要访问的文件,使得eyeOS 向Hadoop 节点发出上传文件请求。(2)管理节点接收到文件上传请求,自动计算文件大小,查找系统数据节点存储状况,分配存储空间。(3)客户端上传文件块到各个数据节点,完成文件的修改存储。
五、结论
归根到底,云存储是分布式存储技术的发展和延续。透过广域网,云存储实现比传统的分布式存储更透明、更快速、更可靠的远程存储访问技术。
本文实现了构建私有云存储平台上云存储的管理与应用,以hadoop 开源平台实现了一个以Web 操作系统为云存储接口的云存储系统。下一步将继续对系统进行逆向测试、压力测试、兼容性测试等实用性方面的测试。以及进一步优化的工作。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:私有云存储平台技术及应用
本文网址:http://www.toberp.com/html/consultation/10839712727.html