ceph存储

ceph

ceph是一个开源的,用c++语言编写的分布式的存储系统,存储数据。

/dev/sdb

fdisk /dev/sdb

gdisk /dev/sdb

lvm 逻辑卷:可以扩容

高可用

基于物理意义上的单机的存储系统

分布式有多台物理磁盘组成一个集群,在这个基础之上实现了高可用,扩展

在这里插入图片描述

ceph是一个统一的存储系统,同时提供块设备存储,文件系统存储和对象存储三种存储方式

对象存储:对象存储也就是键值存储,通过接口指令,get put del 和其他的命令向对象存储上传或者下载数据。把数据作为对象,按照一定的逻辑和算法,存储到不同的硬盘(可以是不同机器上的硬盘,依靠网络来进行互相通信)

优点:

1、使用的是硬盘组,不收目录系统的影响,读写效率高

2、集群的扩展性很高,支持多副本存储

3、可以通过URL访问文件。简单,也好管理

缺点

1、内容变动比较大不适合作为对象存储,每一次变动都要重新上传

2、静态图片等等不需要变动的数据

文件系统存储 ceph-fs

ceph集群的存储看做是一个大的分区或者共享文件挂载到客户端的本地

客户端可以在本地直接进行操作,速度快,可以存储的数据类型也没有限制

内核态和用户态

mount:内核 速度快 读写也快

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

优点:

1、成本低,随便的一台服务器都可以做。

2、公司内部都会使用这种方式,内网云盘就是这种方式

缺点:读写速度和传输速度相对比较慢(本地使用不在此列)

块存储RBD:

rdb为kvm虚拟化和云服务提供(OpenStack)提供高性能和无线可扩展的存储后端。

磁盘映射,raid和lvm提供磁盘空间,多个主机上的raid或者lvm组成一个逻辑上的raid和lvm 多块磁盘组成这种逻辑空间,可以并行的执行读写操作,lo效率比较高

缺点

1、对网络传输的要求比较高,windows无法访问liunx的rdb操作。。

ceph的主要特点:

统一存储 对象 块 文件系统

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

高扩展性,扩容方便

可靠性比较强 副本 ,创建数据的时候可以对数据进行副本操作,副本数由管理定义的

副本可以跨主机保存,跨架构,跨机房,跨数据中心进行保存

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

ceph的组件和作用

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

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

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

2、Monitors mon monitors守护进程,监视ceph集群的状态,维护ceph集群的健康

OSD的状态也属于MON的监控范围

ceph存储集群必须要有一个Monitors进程,和两个OSD

服务器的数量必须是奇数台。3-5

管理节点 mon

​ osd

​ osd

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

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

5、RADOS:分布式存储系统,所有的存储功能都是基于RADOS实现的,高可用,高性能也是基于RASDOS实现的

他是所有一切的底层,也是整个ceph集群的核心

RADOS由两部分组成:OSD,Monitor

6、LIBRADOS:这是一个动态库,用来允许应用程序和RADOS系统进行交互

通过端口进行通信。

存储的概念:

存储数据和object的关系

对象,块,文件系统挂载,都需要odject,存储的数据会被分成多个object,分成之后每一个数据都有一个odject id

每个数据object的大小是可以调整的。默认是4M

Ceph的最小存储单位

object和pg的关系

object数量太多了,在一个集群当中,object的数量太多,遍历和寻址速度都很慢

PG,就是归置组,placcment group 管理object

object通过CRUSH算法隐射到PG当中。一个pg里面可以包含多个object。

pg与osd之间的关系:

pg也是通过CRUSH算法隐射到osd当中去存储,如果有副本,每个pg会映射到三个OSD当中

三个OSD A B C

pg--------------->a

pg--------------->b

pg--------------->c

PG和PGD的关系

pgd是存放pg的排序组合

3osd

A B C 副本数2 pdb1

[A B]

PGD 2

[A B]

[A C]

存储池 pool

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

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

实验

四台试验机

20.0.0. :admin osd mon mgr

20.0.0. :osd mds mon mer

20.0.0.

20.0.0.

先关防火墙 在做映射
时间同步

在这里插入图片描述

做一个免密登录

ssh-keygen rsa

ssh-copy-id 20.0.0.41

ssh-copy-id 20.0.0.42

ssh-copy-id 20.0.0.13

在这里插入图片描述

cat> /etc/yum.repos.d/ceph.repo <<eof
[ceph]
name=ceph
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=ceph-noarch
baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
eof

在这里插入图片描述

安装服务 所有节点

yum install -y ceph-deploy ceph ceph-radosgw snappy leveldb gdisk python-argparse gperftools-libs

到工作路径下 做集群

 cd /etc/ceph/
 ceph-deploy new mysql1 mysql2 mysql3

在这里插入图片描述

修改配置文件

osd_pool_default_size = 2

在这里插入图片描述

在这里插入图片描述

节点初始化

ceph-deploy mon create-initial
ceph-deploy --overwrite-conf mon create-initial

在这里插入图片描述

查看集群状态

ceph -s

在这里插入图片描述

添加硬盘

三个节点都添加一块

alias scan='echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- - -" > /sys/class/scsi_host/host1/scan;echo "- - -" > /sys/class/scsi_host/host2/scan'

添加玩scan刷新

都在主节点操作对三个节点进行分区

ceph-deploy disk zap mysql1 /dev/sdb
ceph-deploy disk zap mysql2 /dev/sdb
ceph-deploy disk zap mysql3 /dev/sdb

在这里插入图片描述

在这里插入图片描述

把三个硬盘添加

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

在这里插入图片描述

查看状态

 ceph-deploy osd list mysql1 mysql2 mysql3

在这里插入图片描述

在这里插入图片描述

添加mgr服务

ceph-deploy mgr create mysql1 mysql2 mysql3

在这里插入图片描述

查看状态

在这里插入图片描述

生成管理员密钥并将密钥转发到集群 并在集群服务器上给予权限

[root@mysql1 ceph]# ceph-deploy admin mysql1 mysql2 mysql3

[root@mysql1 ceph]# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@mysql2 ceph]# chmod +r /etc/ceph/ceph.client.admin.keyring
[root@mysql3 ceph]# chmod +r /etc/ceph/ceph.client.admin.keyring

在这里插入图片描述

在这里插入图片描述

给他读权限

在这里插入图片描述

创建mds服务 元数据服务器

ceph-deploy mds create mysql2 mysql3
ceph mds stat
ceph -s

在这里插入图片描述

在这里插入图片描述

第一个存储数据的pool

第二个存储元数据的pool

少于5个osd的情况下,pg的数量等于128

5-10个osd 512

10-50个osd 4096

pg总数:默认是750,不能超过750个

存储元数据也要pg

存储数据

osd * pg值

元数据

2 * pg值

osd * pg值+2 * pg值<750

pg_num=(osd*100)/副本数

设定pg值的目的。通过管理较少的pg.ceph获取数据,分配管理数据的效率越高。

pg值越多,数据分布的越多,管理就越发复杂。

存储数据这里给128

创建存储池

ceph osd pool create ceph_data 128
用于存储普通数据
ceph osd pool create ceph_metadata 128
创建新的存储池 用于存储元数据

在这里插入图片描述

保存元数据的

在这里插入图片描述

创建文件系统

ceph fs new cephfs ceph_metadata ceph_data
创建一个名为cephfs的文件系统并包含了  ceph_metadata cephfs_data 一个元数据池 和一个数据池

在这里插入图片描述

查看文件系统的状态信息

ceph fs status cephfs

在这里插入图片描述

内核态用来挂载 客户机

在这里插入图片描述

客户机

mount -t ceph 20.0.0.40:6789:/ /data -o name=admin,secret=AQChFbNmXkCdBBAA2z1XUcF9FIRBjSLqg4/csQ==

在这里插入图片描述

在这里插入图片描述

解挂载

在这里插入图片描述

用户态挂载

服务端

将密码文件和配置文件进行传输就不用每次挂载都需要输入密码

scp root@20.0.0.40:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
scp root@20.0.0.40:/etc/ceph/ceph.conf /etc/ceph/

客户端

yum install -y ceph-fuse
ceph-fuse -m 20.0.0.40:6789 /data/

在这里插入图片描述

接下来就可以进行免密挂载了

ceph-fuse -m 20.0.0.40:6789 /data1

在这里插入图片描述

查看

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

调整副本数

在这里插入图片描述

在表中添加一个ceph-test
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值