1 分布式存储技术简介
1.1 分布式存储系统的特性
(1)可扩展
分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为线性增长。分布式存储的水平扩展有以下几个特性:
- 节点扩展后,旧数据会自动迁移到新节点,实现负载均衡,避免单点过热的情况出现;
- 水平扩展只需要将新节点和原有集群连接到同一网络,整个过程不会对业务造成影响;
- 当节点被添加到集群,集群系统的整体容量和性能也随之线性扩展,此后新节点的资源就会被管理平台接管,被用于分配或者回收。
(2)低成本
分布式存储系统的自动容错、自动负载均衡机制使其可以构建在普通的PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以实现自动运维。
(3)高性能
无论是针对整个集群还是单台服务器,都要求分布式存储系统具备高性能。
(4)易用
分布式存储系统需要能够提供易用的对外接口,另外,也要求具备完善的监控、运维工具,并能够与其他系统集成。
(5)易管理
可通过一个简单的WEB界面就可以对整个系统进行配置管理,运维简便,极低的管理成本。
分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。
1.2 存储分类
(1)本地存储
本地存储本地的文件系统,不能在网络上用。
- ext3
- ext4
- xfs
- ntfs
(2)网络存储
网络存储---网络文件系统,共享的都是文件系统。
- nfs:网络文件系统
- hdfs:分布式网络文件系统
- glusterfs:分布式网络文件系统
(3)共享的是裸设备
- 块存储 cinder ceph(块存储 对象存储 网络文件系统-分布式)
- SAN(存储区域网)
(4)分布式
- 集群
2 分布式存储分类介绍
2.1 Hadoop HDFS(大数据分布式文件系统)
HDFS(Hadoop Distributed File System)是一个分布式文件系统,是hadoop生态系统的一个重要组成部分,是hadoop中的的存储组件.HDFS是一个高度容错性的系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
HDFS的优点:
(1)高容错性
数据自动保存多个副本
副本丢失后,自动恢复
(2)良好的数据访问机制
一次写入、多次读取,保证数据一致性
(3)适合大数据文件的存储
TB、 甚至PB级数据
扩展能力很强
HDFS的缺点:
(1)低延迟数据访问
难以应付毫秒级以下的应用
(2) 海量小文件存取
占用NameNode大量内存
(3)一个文件只能有一个写入者
仅支持append(追加)
2.2 OpenStack的对象存储Swift
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一。Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift的是用Python开发
其主要特点为:
- 各个存储的节点完全对等,是对称的系统架构。
- 开发者通过一个RESTful HTTP API与对象存储系统相互作用。
- 无单点故障:Swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多份。整个Swift集群中,也没有一个角色是单点的。
- 在不影响性能的情况下,集群通过增加外部节点进行扩展。
- 无限的可扩展性:这里的扩展性分两方面,一是数据存储容量无限可扩展;二是Swift性能(如QPS、吞吐量等)可线性提升,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。
- 极高的数据持久性
Swift可以用以下用途:
- 图片、文档存储
- 长期保存的日志文件
- 存储媒体库(照片、音乐、视频等)
- 视频监控文件的存档
总结:Swift适合用来存储大量的、长期的、需要备份的对象。
2.3 公有云对象存储
公有云大都只有对象存储。例如,谷歌云存储是一个快速,具有可扩展性和高可用性的对象存储。
Amazon类似产品就是S3: http://aws.amazon.com/s3;
微软类似产品Azure Bolb:http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/;
阿里类似的有OSS:https://www.aliyun.com/product/oss/;
阿里云对象存储OSS
阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务
存储类型(Storage Class)
OSS 提供标准、低频访问、归档三种存储类型,其中标准存储类型提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率 1 到 2 次),存储单价低于标准类型;归档存储类型适合需要长期保存(建议半年以上)的归档数据,在三种存储类型中单价最低。
应用场景
(1)图片和音视频等应用的海量存储
OSS可用于图片、音视频、日志等海量文件的存储。
(2)云端数据处理
上传文件到OSS后,可以配合媒体处理服务和图片处理服务进行云端的数据处理。
(3)网页或者移动应用的静态和动态资源分离
利用海量互联网带宽,OSS可以实现海量数据的互联网并发下载。
2.4 GlusterFS分布式文件系统
GlusterFS(GNU ClusterFile System)是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点,2011年被红帽收购。
PB级容量 高可用性 基于文件系统级别共享 分布式 去中心化
glusgerfs存储卷的类型
基本类型:条带,复制,哈希。
复合卷
复合卷就是分布式复制,分布式条带,分布式条带复制卷,像分布式复制,分布式条带这两个是比较常用的,像分布式条带复制卷三种揉一块儿的用的都比较少,
各种卷的整理
分布卷:存储数据时,将文件随机存储到各台glusterfs机器上。
- 优点:存储数据时,读取速度快
- 缺点:一个birck坏掉,文件就会丢失
复制卷:存储数据时,所有文件分别存储到每台glusterfs机器上。
- 优点:对文件进行的多次备份,一个brick坏掉,文件不会丢失,其他机器的brick上面有备份
- 缺点:占用资源
条带卷:存数据时,一个文件分开存到每台glusterfs机器上
- 优点:对大文件,读写速度快
- 缺点:一个brick坏掉,文件就会坏掉
最常见的GPFS和HDFS有什么区别?
GPFS和Hadoop的HDFS系统对比,它设计用于在商用硬件上存储类似或更大的数据
HDFS还将文件分割成块,并将它们存储在不同的文件系统节点内。
HDFS对磁盘可靠性的依赖并不高,它可以在不同的节点内存储块的副本。保存单一副本块的一个节点出现故障可以再复制该组其它有效块内的副本。相较而言,虽然GPFS支持故障节点恢复,但它是一个更严重的事件,它可能包括数据(暂时性)丢失的高风险。
GPFS支持完整的Posix文件系统语义。 HDFS和GFS(谷歌文件系统)并不支持完整的Posix语义。
GPFS跨文件系统分布它的目录索引和其它元数据。相反, Hadoop将它们保留在主要和次要Namenode中,大型服务器必须在RAM内存储所有的索引信息。
GPFS将文件分割成小块。Hadoop HDFS喜欢64MB甚至更多的块,因为这降低了Namenode的存储需求。小块或很多小的文件会快速填充文件系统的索引,因此限制了文件系统的大小。