文章目录
- 开源云计算数据存储平台
- 存储管理和软件定义存储
-
- 软件定义存储开源项目
-
- OpenSDS
- [Libvirt Storage Management:](#Libvirt Storage Management:)
- [OHSM(Online Hierarchical Storage Manager)](#OHSM(Online Hierarchical Storage Manager))
- 开源分布式存储
开源云计算数据存储平台
怎么理解云计算
云计算的目标就是为用户提供计算机基础设施服务 。在云计算模式下,所有计算机资源都是由云计算厂商进行集中管理,用户只需要按需付费,即可获得所需要的服务。这使得用户(企业)不用关心底层的基础设施建设,可以略过一系列复杂的硬件部署、软件安装等步骤,直接使用云计算厂商提供的计算、存储和网络等资源即可。这对于用户来说,是将部署计算机资源从购买产品转换为购买服务。
通俗的例子:比如常见的水电站。我们每天都要用到水和电,但是并不是每家每户每个企业都去建立自己的发电厂和水井等设施。我们只需要缴纳一定的费用就可以享受这样的服务。
云计算中的"云"可以简单理解为任何可以通过互联网访问的服务,那么根据其可以提供的服务类型,云计算有一下3种落地方式:
- Iaas:基础设施即服务。通过互联网提供"基础的计算资源",包括处理能力、存储空间、网络等,用户能从中申请到虚拟或者物理的硬件设备,包括裸机或者虚拟机,可在上面安装操作系统或其他应用程序。典型的代表为Amazon的AWS,阿里云的ECS。
- Paas:平台即服务。将计算环境和开发环境等平台作为一种服务通过互联网提供给用户,用户能从中申请到一个安装了操作系统及各种所需运行库的物理机或者虚拟机,可在上面安装其他应用程序,但是不能修改已经装好的操作系统和运行环境。
- Saas:软件即服务。通过互联网为用户提供软件的一种服务方式。应用软件安装在厂商或者服务供应商那里。用户可以通过网络以租赁而非购买的方式来使用这种软件。典型的应用有百度网盘、360云盘等。几乎所有的应用都是软件即服务。
存储管理和软件定义存储
软件定义存储的诞生背景:各种新型技术的不断进步以及互联网行业的快速发展带来了巨大的存储需求。随着存储系统的多样化,急需一种高效、统一的存储软件以管理不同的存储,并可以在不同的存储之间根据用户的需求进行相应的调度。
计算、存储和网络3个基础设施的发展推动了软件定义存储的发展。软件定义存储通常包括两个部分:控制平面和数据平面。
软件定义存储开源项目
OpenSDS
OpenSDS:最早由华为提出,旨在为存储业界提供标准化的软件定义存储控制平面,从而为用户解决存储过于复杂的问题。由于当前存储管理过于复杂,后端涉及各种各样的存储设备供应商,虚拟化技术等,部署和使用极不方便。OpenSDS开放了统一、标准化的软件定义存储控制器架构。最上层向用户提供统一的接口;中间层用来处理基本的调度和管理,最下层接入不同的存储后端支持。从而管理不同的存储后端,提供统一标准的结构,给用户提供一个更加整洁、灵活的使用方式。
Libvirt Storage Management:
Libvirt是由Redhat开发的一套开源软件工具。其在host端通过管理存储池和卷来为虚拟机提供存储资源。libvirt可以与多种虚拟机交互,包括 KVM/QEMU、Xen、LXC、Virtual Box、VMware ESX及Hyper-V等。另外,libvirt支持多种后端存储类型,如本地文件系统、网络文件系统、iSCSI、LVM等。
OHSM(Online Hierarchical Storage Manager)
OHSM是企业级开源数据存储管理器。它在高成本和低成本的存储介质之间自动移动数据。OHSM系统的存在是因为高速存储设备(如硬盘驱动器)比慢的设备(如光盘和磁带驱动器)更昂贵(每字节存储)。理想的情况是所有数据都可以在高速设备上使用,但这对于许多用户来说是非常昂贵的。相反,OHSM将企业的大部分数据存储在较慢设备上,然后在需要的时候将数据复制到更快的磁盘驱动器上,从而实现动态的数据管理。动态的数据管理能更灵活、充分地利用后端存储资源。
开源分布式存储
什么是分布式存储
分布式存储就是将多台独立的设备通过某种网络通信连接起来,组成一个大的集群,从而使集群中不同设备的硬盘驱动器、固态硬盘等介质组成一个大规模的存储资源池。分布式存储系统一般包含三大组件:元数据服务器(也称主控服务器)、客户端及数据服务器
元数据服务器
元数据服务器是分布式存储系统的核心,主要在系统中提供以下服务:
- 命名空间管理:命名空间管理主要负责分布式存储系统中的元数据管理,比如对象或者文件块到数据服务器的索引、文件之间的关系等。因为在分布式存储系统中,会涉及大量的大型存储对象,它们一般会被分割成小的对象分配到不同的存储位置,因此命名空间的管理十分重要。这不仅涉及到系统中数据一致性的问题,也涉及访问文件的效率。不同的分布式存储系统采用不同的命名空间管理方法,有些分布式系统采用将元数据全部基于内存的存储方式,分布式存储系统采用特殊的文件系统或者数据库等方式来存储元数据。
- 数据服务器管理:由于分布式存储系统是由多个设备组成的集群,各个数据服务器的运行情况显得极为重要。元数据服务器也兼任了数据服务器的管理工作,它需要掌握集群中各个系统的实时情况。如果发生某些节点故障,它需要及时恢复并启用备份节点。对于数据服务器的管理,不同的存储系统采用不同的策略。常见的方式是各个数据服务器节点不间断的向元数据服务器发送心跳感应来报告当前节点的运行状况。
- 主备份容灾:为了提高数据的可靠性和安全性,分布式存储系统通常会进行多组备份。不仅数据需要备份,而且元数据也需要备份。另外在基于内存的元数据管理方式中,还需要开启日志系统来持久化数据。当单一节点出现问题,元数据服务器会根据当前的系统状态转移并启用备份节点。
数据服务器
- 数据的本地存储:数据服务器会维护数据本地化的持久化存储 。对于较小的文件,数据服务器通常会进行整合。例如,将多个文件存储在同一个块中,从而提高空间的利用率。对于较大的文件,数据服务器通常会将其分割成多个小的文件,从而利用分布式存储的特点,将其放置在不同的节点上。同时,所有文件数据块都将与元数据做文件索引,从而实现对文件数据的管理。
- 状态维护:除了做数据存储,数据服务器还会进行状态维护。数据服务器将自己的状态信息报告给元数据服务器,通常这些信息包括当前的磁盘负载、io状态、CPU负载、网络情况等,从而方便元数据服务器进行任务调度和文件数据的划分,同时制定负载均衡策略。
- 副本管理:为了提高数据的可靠性和安全性,分布式存储系统通常会将文件数据做多个备份,根据不同的策略将其存放在不同的位置。当有其他节点出现故障或负载出现不均衡的时候,元数据服务器会根据情况复制或迁移副本,从而保证整个系统中数据的安全性和可用性。
客户端
客户端面向用户,最主要的任务是提供接口给用户,使用户能够访问数据资源。常见的方式是给用户提供可移植操作系统接口,以便能够虚拟文件系统对接;其次向用户提供基于用户态的用户访问接口。另外,其他的分布式系统向用户提供RESTful接口支持。从而使用户可以通过HTTP的方式访问文件资源。
常见的开源分布式存储软件
Hadoop
Hadoop是一个软件编程框架模型,利用计算机集群处理大规模的数据集进行分布式存储和分布式计算。Hadoop由4个模块组成,即Hadoop Common、HDFS(Hadoop Distributed File System)、Hadoop YARN及Hadoop MapReduce。其中,HDFS和Hadoop MapReduce是主要模块。HDFS是是一个分布式存储系统,为海量数据提供存储服务。而Hadoop MapReduce是一个分布式计算框架,用来为海量数据提供计算服务。
GlusterFS
GlusterFS是一个开源分布式存储系统,具有强大的横向扩展能力,能够灵活地结合物理、虚拟的云资源实现高可用的企业级性能存储。借助TCP/IP或infiniBand RDMA网络将物理分布的网络存储资源聚集在一起,并使用统一的全局命名空间来管理数据。同时,GlusterFS基于可堆砌的用户空间设计,可以为不同的数据负载提供优质的性能。相比于传统的SAN 和NAS,GlusterFS容量可以按照比例扩展;廉价且使用简单,可以完全建立在已有的文件系统上;扩展和容错能力比较合理且复杂度低;适应性强,部署方便,对环境依赖低。
ceph
ceph作为一种分布式存储系统,通过统一的平台提供对象存储、块存储和文件存储,具有强大的伸缩性,能够为用户提供PB或EB级的数据存储空间。ceph的优点在于,它充分利用了各个节点的存储能力和计算能力。在存储数据时通过哈希算法计算出数据的存储位置,实现了集群中的负载均衡;并采用crush、哈希环等方法,使它可以避免传统单点故障的问题,在大规模集群中仍然能保持稳态。目前,一些开源云计算项目都已经开始支持ceph。例如,在openstack中,ceph可以对接openstack的Cinder后端存储、Glance的镜像存储以及虚拟机的数据存储。
Sheepdog
Sheepdog作为一种分布式存储系统,主要用于为虚拟机提供块存储服务。sheepdog采用了完全对称的结构,没有元数据服务器的中心节点,没有单点故障、性能可以线性扩展。当集群中有新节点加入时,sheepdog能自动检测并将新节点加入到集群中,数据自动实现负载均衡。目前KVM/QEMU、Openstack、Libvirt等都很好的支持了Sheepdog。Sheepdog总体包括了集群管理和存储管理两大部分,运行后将启动两种类型的进程:sheep和dog。其中sheep进程作为守护进程兼备节点路由及对象存储功能;dog进程作为管理进程可管理整个集群。在sheepdog对象存储系统中,getway负责从QEMU的块设备驱动上接收io请求,并通过哈希算法计算出目标节点,将io转发到相应的节点上。