Ceph分布式存储笔记

文章目录

  • ceph分布式存储
    • 存储分类
    • 分布式存储分类
      • Hadoop HDFS(大数据分布式文件系统)
      • OpenStack的对象存储Swift
      • 公有云对象存储
      • GlusterFS
    • GPFS和HDFS的区别
    • Ceph
      • cephg的优势
      • ceph架构
      • ceph基本组件
      • ceph存储种类及应用场景
        • 块存储
        • 文件存储
        • 对象存储
      • ceph工作原理
      • ceph名词介绍
      • ceph的集群部署
        • ceph的存储方式

ceph分布式存储

存储分类

本地存储本地的文件系统,不能再网络上用

ext3 ext4 xfs ntfs

网络存储–网络文件系统,共享的都是文件系统

nfs  网络文件系统
hdfs 分布式网络文件系统
glusterfs 分布式网络文件系统

共享的是裸设备

块数据cinder ceph(快存储 对象存储 网络文件系统-分布式)
SAN(存储区域网)

分布式集群

			client
			  |
		  namenode
	__________|________
    |         |       |
datanode  datanode datanode

分布式存储分类

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

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

优点:

  1. 高容错性
    数据自动保存多个副本
    副本丢失后自动恢复
  2. 良好的数据访问机制
    一次写入,多次读取,保证数据一致性
  3. 适合大数据文件的存储
    TB、甚至PB级数据
    扩展能力很强

缺点:

  1. 低延迟数据访问 难以应付毫秒级一下应用
  2. 海量小文件存取 占用NameNode大量内存
  3. 一个文件只能有一个写入者 仅支持append

OpenStack的对象存储Swift

OpenStack是Openstack开源云计算项目的子项目之一,Swift的目的是使用普通硬件来构建冗余、可扩展的分布式对象存储集群

主要特点:

  1. 各个存储的节点完全对等,是对称的系统架构
  2. 开发者通过一个RESTful HTTP API与对象存储系统相互作用
  3. 无单电故障:Swift的元数据存储是完全均匀随机分布的,并且与对象文件存储一样,元数据也会存储多分
  4. 在不影响性能的情况下,集群通过增加外部节点进行扩展
  5. 无限的可扩展性:这里的扩展性氛围两方面,一是数据存储容量无限可扩展,二是Swift性能科先行提升,扩容只需简单地新增机器,系统会自动完成数据迁移等工作
  6. 极高的数据持久性

Swift可以用一下用途:
图片、文档存储
长期保存的日志文件
存储媒体库
视频监控文件存档

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

公有云对象存储

公有云大都只有对象存储

OSS提供标准、低频访问、归档三种存储类型,其中比奥春存储类型提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据,存储弹夹低于标准类型;归档存储类型适合需要长期保持的归档数据,在三种存储类型中弹夹最低

应用场景:

  1. 图片和影视片等应用的海量存储
  2. 云端数据处理
  3. 网页活移动应用的静态和动态资源分离

GlusterFS

GlusterFS是一种全对称的开源分布式文件系统,全对称是指采用弹性哈希算法,没有中心节点,所有节点全部平等

glusgerfs存储卷的类型

  • 基本类型:条带,复制,哈希
  • 复合卷,复合卷就是分布式复制,分布式条带,分布式条带复制卷,像分布式复制,分布式条带这两种是比较常用的

各种卷的整理
分布式卷: 存储时将文件随机存储到各台glusgerfs机器上。

  • 优点:存储数据时读取速度快
  • 缺点:一个birck坏掉,文件就会丢失

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

  • 优点:对文件进行的多次备份,一个brick坏掉,文件不会丢失
  • 缺点:占用资源

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

  • 优点:对大文件,读写速度快
  • 缺点:同分布式卷

GPFS和HDFS的区别

GPFS和Hadoop的HDFS系统对比,他设计用于商用硬件上存储类似或更大的数据
HDFS将文件分割成快,并将它们存储在不同的文件系统节点内
HDFS对磁盘可靠性的依赖不高,他可以在不同的节点内存储块的副本。相较而言,GPFS支持故障节点恢复,但他是一个更严重的时间,可能包括数据丢失的高风险
GPFS支持完整的Posix文件系统语义,而HFPS并不支持完整的
GPFS跨文件系统分布他的目录索引和其他元数据,Hadoop将它们保留在主要和次要Namenode中,大型服务器必须在RAM内存储所有的索引信息
GPFS将文件分割成小块,Hadoop HDFS喜欢64MB甚至更多块,因为这降低了Namenode的存储需求。小块文件会快速填充文件系统的索引,因此限制了文件系统的大小

Ceph

cephg的优势

  • 搞扩展性:使用普通x86服务器,支持10~1000台服务器
  • 高可靠性:没有单电故障,多数据副本,自动管理,自动修复
  • 高性能:数据分布均衡
  • 可用于对象存储,块设备存储和文件存储

ceph架构

基础存储系统
rados:基础的存储系统RADOS,即可靠的、自动化的。分布式的对象存储。所有存储在ceph系统中的用户数据事实上最终都是由这一层来存储的。
librados:这一层的功能是对RADOS进行抽象和封装,并向上层提供API,一遍直接基于RADOS进行应用开发

高层应用接口
radosgw:对象网关接口
rdb:块存储
cephfs:文件系统存储
其左右实在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口

ceph基本组件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IOCqPgnT-1630498760903)(./1630493574165.png)]

Osd
用于集群中所有数据与对象的存储。处理集群数据的复制、恢复、回填、再均衡。并向其他osd守护进程发送心跳,向Mon提供一些监控信息
当ceph存储集群设定数据有两个副本时,则至少需要两个OSD守护进程即两个OSD节点,集群才能达到active+clean状态

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

Monitor
监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性。ClusterMAP描述了对象块存储的物理位置,以及一个将设备距和到物理位置的桶列表

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

ceph结构包含两个部分
ceph client:访问ceph底层服务或组件,对外提供各种接口。比如L对象存储接口、块存储接口、文件及存储接口
ceph node:ceph底层服务提供短。也就是ceph存储集群

ceph存储种类及应用场景

块存储

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

优点:
用过Raid与LVM等手段,对数据提供了保护
多块链家的硬盘组合起来,提高容量
多块磁盘组合出来的逻辑盘,提升读写效率

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

使用场景:
Docker容器、虚拟机磁盘存储分配。
日志存储
文件存储

文件存储

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

优点:
造价低
方便文件共享

缺点:
读写速率低
传输速率慢

使用场景:
日志存储
有目录结构的文件存储

对象存储

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

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

使用场景:
图片存储
视频存储

ceph工作原理

无论使用哪种存储方式,存储的数据都会被切分成对象。对象大小可以由管理员调整。每个对象都会有一个唯一的OID,由ino与ono生成,ino为文件的file id,ono是分片的编号。oid的好处是可以唯一标识没一个不同的对象,并且存储了对象与文件的从属关系。
但是对象并不会直接存储进OSD中,因为对象的size很小,在一个大规模的集群中可能有几百到几千万个对象,这么多对象光是遍历寻址速度都是很满的。并且如果将对象直接通过哈希算法映射到osd上,当这个osd损坏时,对象无法自动迁移到其他osd上面。为了解决这个问题,ceph映入了归置组的概念,即PG
PG是一个逻辑概念。他在数据寻址时类似于数据库中的索引;每个对象都会固定映射进一个PG中,当我们寻找一个对象时,只需要先找到对象所属的PG,然后遍历这个PG就可以了。在数据迁移时,也是以PG作为基本单位进行迁移。
对象如何映射进PG?首先使用静态hash函数对OID做hash取出特征码,用特征码与PG数量取模,得到的序号则是PGID。
最后PG会根据管理员设置的副本数量进行复制,通过crush算法存储到不同的OSD节点上,第一个osd节点即为主节点,其余均为从节点

ceph名词介绍

  • Monitor 监控整个集群的状态,维护集群的cluster MAP二进制表,保证集群数据的一致性
  • OSD 负责响应客户端请求返回具体数据的进程。一个ceph集群一般都有很多歌OSD
  • MDS 是cephFS服务依赖的元数据服务
  • Object ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据
  • PG 一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据
  • RADOS 是集群的精华,用户实现数据分配Failover等集群操作
  • libradio 是rados提供库
  • CRUSH 是ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方
  • RBD 是ceph对外提供块设备服务
  • RGW 是ceph对外提供的对象存储服务
  • cpehFS 是ceph对外提供的文件系统服务

ceph的集群部署

ceph的存储方式

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

ceph文件系统
ceph文件系统是个POSIX兼容的文件系统,使用ceph存储集群来存储数据。ceph文件系统与ceph块设备、同事提供S3和Swift API的ceph对象存储、或者librados一样,都使用相同的ceph存储集群系统

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

你可能感兴趣的:(ceph,分布式存储)