存储的基本概念

目录

认识分布式存储

分布式存储的特性

存储分类

分类介绍

Hadoop HDFS(大数据分布式文件系统)

HDFS的优点

HDFS的缺点

Openstack的对象存储Swift

其主要特点

公有云的对象存储

存储类型(Storage Class )

GlusterFS(GUN clusterFile System)分布式文件系统

glusgerfs存储卷的类型

最常见的GPFS和HDFS有什么区别?

Ceph

Ceph简介

ceph的优势

ceph架构 

ceph的基本组件

ceph存储种类以及其应用场景

ceph工作原理

ceph名词介绍

ceph的存储方式


认识分布式存储

分布式存储就是通过网络将数据分散存储在多台独立的设备上。

比如说,我们 现在有三台独立的机器,每台机器上各有20G独立的硬盘,我们可以将这三台机器上的硬盘组成一个60G的大存储去提供使用。

分布式存储的特性

分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为球性增长。分布式存储的水平扩展有以下几个特性:

可扩展

分布式存储系统可以扩展到几百台甚至几千台的集群规模,而且随着集群规模的增长,系统整体性能表现为球性增长。分布式存储的水平扩展有以下几个特性:

1)节点扩展后,旧数据会自动迁移到新节点,实现负载均衡,避免单点过热的情况出现;

2)水平扩展只需要将新节点和原有集群连接到同一网络,整个过程不会对业务造成影响;

3)当节点被添加到集群,集群系统的整体容量和性能也随之线性扩展,此后新节点的资源就会被管理平台接管,被用于分配或者回收。

低成本

分布式存储系统的自动容错、自动负载均衡机制使其可以构建在普通的PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以实现自动运维。

高性能

无论是针对整个集群还是单台服务器,都要求分布式存储系统具备高性能。

易用

分布式存储系统需要能够提供易用的对外接口,另外,也要求具备完善的监控、运维工具,并能够与其他系统集成。

易管理

可通过一个简单的WEB界面就可以对整个系统进行配置管理,运维简便,极低的管理成本。

分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。分布式存储涉及的技术主要来自两个领域:分布式系统以及数据库。

存储分类

本地存储

本地的文件系统,不能在网络上使用。

本地文件系统有ext3 ext4 xfs ntfs

网络存储

1. 网络文件系统,共享的都是文件系统。

nfs 网络文件系统

hdfs 分布式网络文件系统

glusterfs 分布式网络文件系统

分析:我们将做好的nfs目录共享出去,然后在我们的客户端挂载就可以使用了。

2. 共享的是裸设备,也叫做块存储

cinder

ceph(块存储,对象存储,网络文件系统-分布式)

SAN(存储区域网):SAN指的就是我们的服务器与存储之间通过光纤交换机去连接,最后组成一个专用的存储网络 ,价格比较贵。

3. 分布式

一个以集群的方式提供存储服务

datanode:真正存放数据的节点

namenode:元数据服务器。我们的数据一般分为元数据和数据,数据就是实实在在的内容,而元数据就是属性,例如:创建时间,属组,indeo,还有这个数据要存到哪里等等。

分类介绍

Hadoop HDFS(大数据分布式文件系统)

HDFS (Hadoop Distributed File system) 是一个分布式文件系统,是hadoop生态系统的一-个重要组成部分,是HDFS (Hadoop Distributed File system) 是一个分布式文件系统,是hadoop生态系统的一-个重要组成部分,是hadoop中的的存储组件.HDFS是-.个高度容错性的系统,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。

HDFS的优点

1.高容错性

数据自动保存多个副本

副本丢失后,自动恢复

2.良好的数据访问机制

一次写入、多次读取,保证数据一一致性

3. 适合大数据文件的存储

TB、甚至PB级 数据

扩展能力很强

HDFS的缺点

1.低延迟 数据访问

难以应付毫秒级以下的应用

2.海量小文件存取

占用NameNode大量内存,也就是元数据服务器的大量内存

3.一 个文件只能有一个写入者

仅支持append(追加)

Openstack的对象存储Swift

 openStack object Storage (Swift) 是openStack开源云计算项目的子项目之一。Swift的目的是使用普通硬件来构建冗余的、可扩展的分布式对象存储集群,存储容量可达PB级。Swift的是用Python开发

其主要特点

1.各个存储的节点完全对等,是对称的系统架构。

2.开发者通过一一个RESTfu1 HTTP API 与对象存储系统相互作用。

3.无单点故障: swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多份。整个Swift集群中,也没有- -个角色是单点的。

4.在不影响性能的情况下,集群通过增加外部节点进行扩展。

5.无限的可扩展性:这里的扩展性分两方面,- - 是数据存储容量无限可扩展;二是Swift性能(如QPS、 吞吐量等)可线性提升,扩容只需简单地新增机器,系统会自动完成数据迁移等工作,使各存储节点重新达到平衡状态。

6.极高的数据持久性

Swift可以用以下用途:

图片、文档存储

长期保存的日志文件

存储媒体库(照片、音乐、视频等)

视频监控文件的存档

总结: Swift适合用来存储大量的、长期的、需要备份的对象。

公有云的对象存储

公有云大都只有对象存储。例如,谷歌云存储是一个快速, 具有可扩展性和高可用性的对象存储。

Amazon类似产品就是S3: http: //aws . amazon. com/s3;

微软类似产品Azure Bo1b: http: //azure . mi crosoft . com/en-us/ documentati on/articles /storage-

dotnet-how-to-use-b1obs/;

阿里类似的有0SS: https :/ /www. aliyun. com/product/oss/ ;

阿里云对象存储OSS

阿里云对象存储服务(Object storage Service, 简称OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务

存储类型(Storage Class )

OSS提供标准、低频访问、归档三种存储类型,其中标准存储类型提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率1到2次),存储单价低于标准类型;归档存储类型适合需要长期保存(建议半年以上)的归档数据,在三种存储类型中单价最低。

应用场景

1、图片和音视频等应用的海量存储

OSS可用于图片、音视频、日志等海量文件的存储。

2、云端数据处理

上传文件到0SS后,可以配合媒体处理服务和图片处理服务进行云端的数据处理。

3、网页或者移动应用的静态和动态资源分离

利用海量互联网带宽,0SS可以实现海量数据的互联网并发下载。

GlusterFS(GUN clusterFile System)分布式文件系统

 GlusterFS (GNU ClusterFile System) 是一种全对称的开源分布式文件系统,所谓全对称是指GlusterFS采用弹性哈希算法,没有中心节点,所有节点全部平等。GlusterFS配置方便,稳定性好,可轻松达到PB级容量,数千个节点,2011年被红帽收购。

PB级容量 高可用性 基于文件系统级别共享 分布式 去中心化(没有什么master,node概念)

glusgerfs存储卷的类型

基本类型:条带,复制,哈希。

复合卷

复合卷就是分布式复制,分布式条带,分布式条带复制卷,像分布式复制,分布式条带这两个是比较常用的,像分布式条带

复制卷三种揉一块儿的用的都比较少,

各种卷的整理

分布卷:存储数据时,将文件随机存储到各台glusterfs机器上。

优点:存储数据时,读取速度快

缺点:一个birck坏掉,文件就会丢失

复制卷:存储数据时,所有文件分别存储到每台g1usterfs机器上。

优点:对文件进行的多次备份,一个brick坏掉,文件不会丢失,其他机器的brick上面有备份

缺点:占用资源

条带卷:存数据时,一个文件分开存到每台glusterfs机器上

优点:对大文件,读写速度快

缺点:一个brick坏掉,文件就会坏掉,因为是把文件分开存的

最常见的GPFS和HDFS有什么区别?

GPFS和Hadoop的HDFS系统对比,它设计用于在商用硬件上存储类似或更大的数据

HDFS还将文件分割成块,并将它们存储在不同的文件系统节点内。

HDFS对磁盘可靠性的依赖并不高,它可以在不同的节点内存储块的副本。保存单-副本块的-一个节点出现故障可以再复制该组其它有效块内的副本。相较而言,虽然GPFS支持故障节点恢复,但它是- -个更严重的事件,它可能包括数据(暂时性)丢失的高风险。

GPFS支持完整的Posix文件系统(Posix其实就是一个可移植操作系统的接口)语义。HDFS 和GFS(谷歌文件系统)并不支持完整的Posix语义。

GPFS跨文件系统分布它的目录索引和其它元数据。相反,Hadoop将它 们保留在主要和次要Namenode中,大型服务器必须在RAM内存储所有的索引信息。

GPFS将文件分割成小块。Hadoop HDFS 喜欢64MB甚至更多的块,因为这降低了Namenode的存储需求。小块或很多小的文件会快速填充文件系统的索引,因此限制了文件系统的大小。

Ceph

Ceph简介

Ceph使用C++语言开发,遵循LGPL协议开源。Sage Weil (Ceph论文发表者)于2011年创立了以Inktank公司主导Ceph的开发和社区维护。2014年Redhat收购i nktank公司,并发布Inktank Ceph企业版 (ICE)软件,业务场景聚焦云、备份和归档,支持对象存储和块存储以及文件系统存储应用。出现Ceph开源社区版本和Redhat企业版。

Cphe主要设计的初衷是变成一一个可避免单节点故障的分布式文件系统,PB级别的扩展能力,而且是一一种开源自由软件,许多超融合的分布式文件系统都是基于Ceph开发的。

Ceph是一个统一 的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

ceph的优势

高扩展性:使用普通x86服务器,支持10~1000台服务器,支持TB到EB级的扩展。

高可靠性:没有单点故障,多数据副本,自动管理,自动修复。

高性能:数据分布均衡。

可用于对象存储,块设备存储和文件系统存储

ceph架构 

基础存储系统

rados:基础存储系统RADOS (Reliable, Autonomic, Distributed object store, 即可靠的、自动化的、分布式的对象存储)。所有存储在Ceph系统中的用户数据事实上最终都是由这一层来存储的。Ceph的高可靠、高可扩展、高性能、高自动化等等特性本质上也是由这---层所提供的。

基础库librados:这-层的功能是对RADOS进行抽象和封装,并向上层提供API,以便直接基于RADOS (而不是整个Ceph)进

行应用开发。特别要注意的是,RADOS是-一个对象存储系统,因此,1ibrados 实现的API也只是针对对象存储功能的。

高层应用接口

radosgw:对象网关接口(对象存储)

rbd:块存储

cephfs:文件系统存储

其作用是在ibrados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口。

ceph的基本组件

如上图所示,ceph主要有三个基本进程

osd

用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,然后向Mon提供一些监控信息。

当Ceph存储集群设定数据有两个副本时(一共存两份),则至少需要两个OSD守护进程即两个oSD节点,集群才能达到active+clean状态。

MDS(可选)

为Ceph文件系统提供元数据计算、缓存与同步(也就是说,Ceph 块设备和Ceph对象存储不使用MDS )。在ceph中,元数据也是存储在osd节点中的,mds类似于元数据的代理缓存服务器。MDS进程并不是必须的进程,只有需要使用CEPHFS时,才需要配置MDS节点。

Monitor

监控整个集群的状态,维护集群的c1uster MAP二进制表(二进制表存的就是OSD的网络地址以及各个OSD的状态),保证集群数据的一致性。c1usterMAP描述了对象块存储的物理位置,以及一个将设备聚合到物理位置的桶列表。

Manager (ceph-mgr>

用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供 ceph dashboard (cephui)和 resetfu1 api。Manager组件开启高可用时,至少2个。

ceph结构包含两个部分

ceph client:访问ceph底层服务或组件,对外提供各种接口。比如:对象存储接口,块存储接口,文件级存储接口。

ceph node:ceph地城服务提供端,也就是ceph存储集群。

ceph存储种类以及其应用场景

1. 块存储

 典型设备:磁盘阵列,硬盘

主要是将裸磁盘空间映射给主机使用的。

优点:

通过Raid (磁盘阵列)与LvM等手段,对数据提供了保护。多块廉价的硬盘组合起来,提高容量。

多块磁盘组合出来的逻辑盘,提升读写效率。

缺点:

采用SAN架构组网时,光纤交换机,造价成本高。主机之间无法共享数据。

使用场景:

Docker容器、虚拟机磁盘存储分配。日志存储。

2. 文件存储

典型设备:FTP、NFS服务器

为了克服块存储文件无法共享的问题,所以有了文件存储。在服务器上架设FTP与NFS服务,就是文件存储。

优点:

造价低,随便一台机器就可以了。方便文件共享。

缺点:

读写速率低。传输速率慢。

使用场景:

日志存储。

有目录结构的文件存储。

3. 对象存储

为什么需要对象存储?

首先,一个文件包含了属性(术语叫metadata,元数据,例如该文件的大小、修改时间、存储路等)以及内容(以下简称数据)。

例如IFAT32这种文件系统,存储过程是链表的形式。

而对象存储则将元数据独立了出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性(主要是对象的数据被打散存放到了那几台分布式服务器中的信息),而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。当用户访问对象,会先访问元数据服务器,元数据服务器只负责反馈对象存储在哪些OSD,假设反馈文件A存储在B、C、D三台OSD,那么用户就会再次直接访问3台OSD服务器去读取数据。

这时候由于是3台oSD同时对外传输数据,所以传输的速度就加快了。当OSD服务器数量越多,这种读写速度的提升就越大,通过此种方式,实现了读写快的目的。

另一方面,对象存储软件是有专门的文件系统的,所以OSD对外又相当于文件服务器,那么就不存在文件共享方面的困难了,也解决了文件共享方面的问题。

所以对象存储的出现。很好地结合了块存储与文件存储的优点。

优点:

具备块存储的读写高速。具备文件存储的共享等特性。

使用场景:(适合更新变动较少的数据)图片存储。

视频存储。

Ceph同时提供对象存储、块存储和文件系统存储三种功能,满足不同应用需求。

什么是OSD?

对象存储(object-based storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(object-based Storage Device)简称oSD。总体上来讲,对象存储综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的分布式数据共享等优势,提供了具有高性能、高可靠性、跨平台以及安全的数据共享的存储体系结构。

ceph工作原理

无论使用哪种存储方式(对象、块、挂载),存储的数据都会被切分成对象(objects) : objects size大小可以由管理员调整,通常为2M或4M。每个对象都会有一个唯一的OID,由ino与ono生成,虽然这些名词看上去很复杂,其实相当简单。ino即是文件的File ID,用于在全局唯一标示每一个文件,而ono则是分片的编号。比如:一个文件FileID为A,它被切成了两个对象,一个对象编号0,另一个编号1,那么这两个文件的oid则为AO与A1。0ID的好处是可以唯一标示每个不同的对象,并且存储了对象与文件的从属关系。由于ceph的所有数据都虚拟成了整齐划一的对象,所以在读写时效率都会比较高。

但是对象并不会直接存储进OSD中,因为对象的size很小,在一个大规模的集群中可能有几百到几千万个对象。这么多对象光是遍历寻址,速度都是很缓慢的;并且如果将对象直接通过某种固定映射的哈希算法映射到osd 上,当这个osd损坏时,对象无法自动迁移至其他osd上面(因为映射函数不允许)。为了解决这些问题,ceph引入了归置组的概念,即PG。

PG是一个逻辑概念,我们1inux系统中可以直接看到对象,但是无法直接看到PG。它在数据寻址时类似于数据库中的索引:每个对象都会固定映射进一个PG中,所以当我们要寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了,无需遍历所有对象。而且在数据迁移时,也是以PG作为基本单位进行迁移,ceph不会直接操作对象。

对象时如何映射进PG的?还记得OID么?首先使用静态hash函数对OID做hash取出特征码,用特征码与PG的数量去模,得到的序号则是PGID。由于这种设计方式,PG的数量多寡直接决定了数据分布的均匀性,所以合理设置的PG数量可以很好的提升CEPH集群的性能并使数据均匀分布。

最后PG会根据管理员设置的副本数量进行复制,然后通过crush算法存储到不同的OSD节点上(其实是把PG中的所有对象存储到节点上),第一个osd节点即为主节点,其余均为从节点。

ceph名词介绍

ceph核心组件及概念介绍

Monitor

监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性

OSD

OSD全称Object storage Device,也就是负责响应客户端请求返回具体数据的进程。一个ceph集群一般都有很多个osD。

MDS(可选的,在块存储和对象存储中不用)

MDS全称ceph Metadata server,是CephFS服务依赖的元数据服务。

object

ceph最底层的存储单元是object对象,每个object包含元数据和原始数据。

PG

PG全称P1acement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。

RADOS

RADOS全称Reliable Autonomic Distributed object store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。

Libradio

Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD(块存储)、RGW(对象存储)和CephFS(文件系统存储)都是通过1ibrados访问的,目前提供PHP、Ruby、Java、Python、c和C++支持。

CRUSH

CRUSH是ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

RBD

RBD全称RADOS block device,是ceph对外提供的块设备服务。

RGw

RGw全称RADos gateway,是ceph对外提供的对象存储服务,接口与S3和Swift兼容。

CephFS

CephFS全称Ceph File System,是ceph对外提供的文件系统服务。

ceph的存储方式

radosgw:ceph对象网关

Ceph对象网关是一个对象存储接口,建立在该对象之上, 1ibrados为应用程序提供了通往Ceph存储集群的RESTful网关。ceph对象存储支持两个接口:

1. 与S3兼容:为对象存储功能提供与Amazon S3 RESTfu1 API的大部分子集兼容的接口。

2. 兼容Swift:通过与openstack Swift API的大部分子集兼容的接口,为对象存储功能据供支持。

Ceph对象存储使用Ceph对象网关守护进程(radosgw),它是用于与Ceph存储群集进行交互的HTTP服务器。由于它提供与0penStack Swift和Amazon S3兼容的接口,因此Ceph对象网关具有其自己的用户管理。Ceph对象网关可以将数据存储在用于存储来自Ceph文件系统客户端或Ceph块设备客户端的数据的同一Ceph存储群集中。S3和Swift APl共享一个公共的名称空间,因此您可以使用一个APJ编写数据,而使用另一个API检索数据。

ceph文件系统

Ceph文件系统(CephES)是个 POSIX兼容的文件系统,它使用Ceph存储集群来存储数据。Ceph文件系统与Ceph块设备、同时提供$3和Swift API的Ceph对象存储、或者原生库( libradas )一样,都使用着相同的Ceph存储集群系统。

CEPH块存储

块是一个字节序列(例如,一个512字节的数据块)。基于块的存储接口是最常见的存储数据方法,它们基于旋转介质,像硬盘、CD、软盘。无处不在的块设备接口使虚拟块设备成为与Ceph这样的海量存储系统交互的理想之选。

Ceph块设备是精简配置的、大小可调且将数据条带化存储到集群内的多个QSD。Ceph块设备利用RADQS的多种能力,如快照、复制和一致性。Ceph的RADOS 块设备(RBD)使用内核模块或librbd库与OSD交互。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值