CEPH分布式存储系统

一:ceph是什么:是一个开源的,用c++语言编写的分布式的存储系统,存储文件数据;分布式就是由多台物理磁盘组成一个集群,在这个基础之上实现高可用及扩展。

二、ceph是一个统一的存储系统,可以同时提供三种存储方式,分别是块设备存储、文件系统、对象存储。

1.对象存储:也就是键值存储,通过接口指令,get、put、del和其它的一些命令向对象存储上传或者下载数据;也就是把数据作为对象按照一定的逻辑或算法存储到不同的硬盘,这个硬盘可以是不同机器上的硬盘,依靠网络来进行互相通信。一般存储的是静态图片等等不需要变动的数据。

优点:使用的是硬盘组,不受目录系统的影响,读写效率高;集群的扩展性很强,支持多副本存储,可以直接通过URL访问文件,简单而且也好管理。

缺点:需要大量的硬盘,内容变动太大的文件不适合做对象存储,因为每一次变动都要重新上传。

2.文件系统存储(ceph-fs):ceph集群的存储看做是一个大的分区或者共享文件挂载到客户端的本地,客户端可以在本地直接进行操作,速度快,存储的数据类型也没有限制。

挂载分为两种:内核态:mount   速度快,读写也快

                         用户态:ceph-fuse  速度慢,读写稍慢

优点:成本低,随便的一台服务器都可以做文件系统存储,公司内部会使用这种方式

缺点:读写速度和传输速度相对比较慢;但是本地使用不受影响

3.块存储(RDB):基于虚拟化基础来的,为kvm虚拟化和云服务可以提供高性能和无线可扩展的存储后端;使用的扩展是用磁盘映射,通过RAID和LVM提供磁盘空间,多个主机上的raid或者lvm组成一个逻辑上的RAID和LVM;多块磁盘组成这种逻辑空间,可以并行的执行读写操作,IO效率比较高。

缺点:对网络传输的要求比较高,windows无法访问linux的RDB操作。

三、ceph的主要特点:

1.统一存储:文件系统、块存储、对象存储

2.crush算法,通过算法实现数据的寻址及完整性的校验和一致性,理论上可以支持上千个数据存储节点。

3.可靠性比较强,创建数据的时候可以对数据进行副本操作,副本数由管理定义的,副本可以跨主机、跨架构、跨机房、跨数据中心进行保存

4.高性能,因为是多副本,读写的时候可以做到并行化处理

四、ceph的组件和作用

1.OSD:是ceph当中的守护进程,是集群的基础

              主要的功能:存储数据、保存副本数据、数据恢复、平衡数据分布

              实现冗余和高可用至少要有3个OSD(三个机器上的三个物理硬盘)

2.Monitors:也是ceph的守护进程,监视ceph的集群状态,维护ceph集群的健康状态,其中包括OSD的健康状态也属于MON的监控范围。ceph存储集群至少要有一个MON进程和两个OSD进程。服务器的数量必须是奇数台(一般是3-5台)。

3.MDS也是ceph的守护进程:是保存ceph文件系统的元数据(文件的权限,所有者,所在组,修改时间,在ceph集群中的inode号)

4.managers也是做为ceph的守护进程,跟踪集群的运行时间的指标和ceph集群的状态(状态指的是存储的利用率、性能指标和系统的负载)

5.RADOS:分布式存储系统,ceph所有的存储功能都是基于rados实现的,高性能也是基于rados实现的,它是所有一切的底层,也是整个ceph集群的核心。

RADOS:由两部分组成:OSD和MONTIOR

6.LIBRADOS:是一个动态库,用来允许应用程序和RADOS系统进行交互,也就是通过端口进行通信。

五、ceph存储的概念以及和object的关系:

1.对象、块、文件系统都需要object,存储的数据就会被分成多个object,分成之后每个数据都是一个object  id,每个object的大小是可以调整的,默认是4M,ceph的最小存储单位。

2.object和pg的关系:object数量太多,在一个集群当中,object的数量太多,遍历(就是一个一个去找)和寻址速度都很慢,于是有了归置组(PG),它是来管理object,object通过CRUSH算法映射到PG当中;一个PG里面可以包含多个object。

3.pg与osd之间的关系:

pg也是通过CRUSH算法映射保存到OSD当中,如果有3个副本,每个pg会映射到3个OSD当中,

4.pg与PGD关系

pgd是存放pg的排列组合

六、ceph的存储池pool

对ceph的集群进行逻辑划分,在此设置ceph存储集群的权限,副本数,pg的数量和算法的规则。

pool是由管理员自定义的,相当于一个独立空间,每一个pool之间都是独立的,数据也是隔离的。

pool分为存储数据和存储元数据两个池

七、创建存储池pg值该如何定义

 1.pg数在存储池是有要求的,一般来说少于5个osd的情况下,pg的数量等于128个;如果是5-10个osd,pg设置512个;如果是10-50个osd,pg设置4096个。

2.pg总数:存储数据+存储元数据;默认是750个,不能超过750个。

              存储数据pg值=128*3=384个,因为现在集群有3个osd,就是说现在pg数应该是128*3=384个    剩余750-384=336个pg 

               存储元数据pg值:这里的pg数根据设定数*副本数 128*2=256个pg

3.pg_num=(osd*100)/副本数

4.设置pg的目的就是通过管理较少的pg,ceph获取数据、分配、管理数据的效率越高;因为pg值越多,数据分布的就越多管理就越复杂。

七、实验:4台主机

主节点:192.168.127.80  admin osd mon  mgr

从1节点:192.168.127.90 osd mon  mgr mds

从2节点:192.168.127.99 osd mon  mgr mds

客户端:192.168.127.50   client

四台主机关闭防火墙同步时间及做主机映射

主节点向其它主机进行免密通信

 所有主机清除缓存建立元数据

4台节点安装服务 

回到主节点配置集群

主节点修改副本数,默认是3也可以不修改

在主节点初始化安装mon:ceph-deploy mon create-initial

查看节点状态

3台节点添加硬盘,客户端不需要添加硬盘

查看三台节点的磁盘情况,以下命令免重启直接刷新添加的磁盘 

添加 OSD服务

首先通过osd分别在三台主从节点进行磁盘分区

ceph-deploy disk zap mysql1 /dev/sdb 

ceph-deploy disk zap mysql2 /dev/sdb 

ceph-deploy disk zap mysql3 /dev/sdb 

将分好的区添加到osd节点当中去,以下三个步骤都在主节点完成,不需要到从节点操作

ceph-deploy osd create mysql1 --data /dev/sdb

ceph-deploy osd create mysql2 --data /dev/sdb

ceph-deploy osd create mysql3 --data /dev/sdb

查看osd节点的状态

部署mgr  :监控osd的使用状况

 统一集群配置
在主节点用 ceph-deploy 把配置文件和 admin 密钥拷贝到管理节点和 Ceph 节点,
这样你每次执行 Ceph 命令行时就无需指定 monitor 地址和 ceph.client.admin.keyring 了。

在三个主从节点分别给这个密钥文件一个读的权限

添加集群的性能监控,在主节点只需要安装两个从的即可

ceph集群运用

在主节点首先创建存储池pool

在主节点创建文件系统

在客户端使用内核态进行挂载,先创建目录,再进行挂载

回到主节点查看存储池的状态

在客户端实现用户态进行挂载,首先得装用户态的依赖环境,再将主节点的配置文件和密钥文件复制到客户端的/etc/ceph目录下这样就可以免密挂载

创建目录,进行免密挂载

回到主节点进行查看系统状态

九、neph-test1存储池

十、面试

1.调整副本数的两种方法 

2.ceph的两种挂载方式:

用户态:ceph-fuse   慢

内核态:mount  快

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值