首页 > 编程知识 正文

ceph官方文档,学时刷够了可以直接考试吗

时间:2023-05-04 04:55:18 阅读:51733 作者:2177

文章1、Ceph分布式存储1.1、Ceph文件系统概述1.2、Ceph优势2、Ceph体系结构和名称解释2.1、Ceph体系结构2.2、Ceph核心组件和概念介绍3、Ceph存储过程常规IO流程图3.3、Ceph IO算法Ceph RBD IO流程3.5、Ceph RBD IO框架图4、Ceph构建流程4.1、环境准备4.2、集群构建前配置4.3、Ceph集群4.5的安装、

一、Ceph分布式存储1.1、Ceph文件系统简介

Ceph是一个集成的分布式存储系统,旨在提供卓越的性能、可靠性和可扩展性。

Ceph项目始于Sage正在攻读博士的工作,第一个成果于2004年公布。 之后,为开源社区做出了贡献。 经过几年的发展,现已得到众多云计算厂商的支持和广泛应用。 RedHat和OpenStack都与Ceph集成,支持虚拟机的镜像后端存储。

1.2、Ceph的优势高性能

a .舍弃传统的集中式存储元数据检索方式,采用CRUSH算法,数据分布均衡,并行度高。

b .考虑到灾难恢复域的隔离,可以实现机房之间、机架感知等各种负载的拷贝配置规则。

c .支持数千个存储节点的规模,并支持TB到Pb的数据。

高可用性

a .可灵活控制拷贝数量。

b .支持故障域隔离,数据完整性强。

c .多个故障场景自动修复。

d .无单点故障,自动管理。

高可扩展性

a .去中心化。

b .扩张灵活。

c .随着节点的增加线性增加。

特性丰富

a .支持三种类型的存储接口:块存储、文件存储和对象存储。

b .支持自定义接口,支持多语言驱动。

二、Ceph结构和名称解释2.1、Ceph结构

2.2、Ceph核心组件和概念介绍Monitor一个Ceph集群需要由多个Monitor组成的小集群,它们通过Pax操作系统同步数据,存储OSD元数据。

OSD OSD完全称为对象存储设备,负责根据客户端请求返回特定数据的过程。 一个Ceph集群一般有很多OSD。

MDS MDS的全名是CephFS元数据服务器,是CephFS服务依赖的元数据服务。

Object Ceph底部的存储单元是Object对象,每个Object都包含元数据和原始数据。

PG PG完全称为放置组,是一个逻辑概念,一个PG包含多个OSD。 之所以引入PG层,其实是为了更好地分配数据和定位数据。

RADOS RADOS全名reliableautonomicdistributedobjectstore是Ceph群集的精华,用户可以执行数据分配、故障转移等群集操作。

Libradio LibRados是Rados提供库。 因为rados很难通过协议直接访问,所以上层RBD、RGW和CephFS是通过librados访问的,目前提供了对PHP、Ruby、Java、Python、c和c的支持。

CRUSH CRUSH是Ceph使用的数据分布算法,类似于一致性散列,可以将数据分配到预期的位置。

RBD RBD又名RADOS block device,是Ceph对外提供的块设备服务。

RGW RGW正式称为rados网关,是Ceph对外提供的目标存储服务,接口与S3和Swift兼容。

CephFS CephFS又名Ceph文件系统,是Ceph对外提供的文件系统服务。

三、Ceph保存流程Ceph集群在保存数据时均进行扁平化处理,Object作为集群最小的保存单位。

ceph基于对象存储提供了更高级的思想。 如果对象的数量达到百万级以上,则将本机对象存储在索引对象中时所消耗的性能将非常高。 为此,ceph引入了放置组(pg )的概念。 一个PG是一系列对象的集合。

3.1、Ceph IO流程和数据分布

3.2、正常的IO流程图

步骤:

客户端创建群集处理程序。

客户端读取配置文件。

将monitor连接到客户端,获取集群map信息。

客户端读写io基于crushmap算法请求相应的主osd数据节点。

主osd数据节点同时写入另外两个复制副本节点数据。

等待主节点和其他两个复制副本节点写入数据状态。

主节点和复制副本节点的写入状态都成功后,返回客户端,I/o写入完成。

3.3、Ceph IO算法流程

文件用户需要读写的文件。 文件对象映射: a.ino (文件的元数据,文件的唯一id )。

b.Ono (根据文件分割的某个object的号码,默认是4M,分割成1个块的尺寸)。

c.oid(objectid:inoOno )。

o

bject是RADOS需要的对象。Ceph指定一个静态hash函数计算oid的值,将oid映射成一个近似均匀分布的伪随机值,然后和mask按位相与,得到pgid。Object->PG映射:

a. hash(oid) & mask-> pgid 。
b. mask = PG总数m(m为2的整数幂)-1 。

PG(Placement Group),用途是对object的存储进行组织和位置映射, (类似于redis cluster里面的slot的概念),一个PG里面会有很多object。采用CRUSH算法,将pgid代入其中,然后得到一组OSD。PG->OSD映射:

a. CRUSH(pgid)->(osd1,osd2,osd3) 。

3.4、Ceph RBD IO流程


步骤:

客户端创建一个pool,需要为这个pool指定pg的数量。
创建pool/image rbd设备进行挂载。
用户写入的数据进行切块,每个块的大小默认为4M,并且每个块都有一个名字,名字就是object+序号。
将每个object通过pg进行副本位置的分配。
pg根据cursh算法会寻找3个osd,把这个object分别保存在这三个osd上。
osd上实际是把底层的disk进行了格式化操作,一般部署工具会将它格式化为xfs文件系统。
object的存储就变成了存储一个文rbd0.object1.file。

3.5、Ceph RBD IO框架图


客户端写数据osd过程:

采用的是librbd的形式,使用librbd创建一个块设备,向这个块设备中写入数据。
在客户端本地同过调用librados接口,然后经过pool,rbd,object、pg进行层层映射,在PG这一层中,可以知道数据保存在哪3个OSD上,这3个OSD分为主从的关系。
客户端与primay OSD建立SOCKET 通信,将要写入的数据传给primary OSD,由primary OSD再将数据发送给其他replica OSD数据节点。

四、Ceph搭建过程 4.1、环境准备

1.准备三台centos7虚拟机。
2.每台虚拟机安装两块网卡,一块仅主机模式,一块nat模式。
3.准备两块硬盘,一块系统盘,另一块作为ceph使用大小1024G。

配置IP地址

主机VM1NATceph01192.168.158.9192.168.100.9ceph02192.168.158.11192.168.100.11ceph03192.168.158.12192.168.100.704.2、搭建集群前的配置

每个节点都要操作,步骤一样
1、每个节点的修改主机名,和hosts文件

vi /etc/hosts192.168.100.9 ceph01192.168.100.11 ceph02192.168.100.70 ceph03

2、关闭UseDNS,用CRT连接可以快一点

vi /etc/ssh/sshd_config115/UseDNS no

3、关闭防火墙和核心防护

systemctl stop firewalldsystemctl disable firewalldsetenforce 0vi /etc/selinux/configSELINUX =disabled

4、三个节点创建免交互

ssh-keygenssh-copy-id root@ceph01ssh-copy-id root@ceph02ssh-copy-id root@ceph03

5、配置YUM源

cd /etc/yum.repos.d/mkdir backupmv C* backup//安装wget命令,方便下载新的yum源。yum install wget -y//用wget命令下载新的yum源。wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repowget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo//配置ceph源vi /etc/yum.repos.d/ceph.repo[ceph]name=Ceph packages forbaseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearchenabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1[ceph-noarch]name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/noarch/enabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1[ceph-source]name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/SRPMS/enabled=1gpgcheck=1type=rpm-mdgpgkey=https://mirrors.aliyun.com/ceph/keys/release.ascpriority=1 4.3、安装ceph集群

1.首先安装好相应的工具

//ceph01节点yum install ceph-deploy ceph python-setuptools -y//ceph02、ceph03节点yum install ceph python-setuptools -y//每个节点都创建目录mkdir /etc/ceph

管理节点创建mon并初始化,收集秘钥

[root@ceph01 yum.repos.d]# cd /etc/ceph[root@ceph01 ceph]# ceph-deploy new ceph01 ceph02 '//创建mon'[root@ceph01 ceph]# ceph-deploy mon create-initial'//初始化,收集秘钥'

查看集群状态

[root@ceph01 ceph]# ceph -s

创建osd

[root@ceph01 ceph]# ceph-deploy osd create --data /dev/sdb ceph01[root@ceph01 ceph]# ceph-deploy osd create --data /dev/sdb ceph02[root@ceph01 ceph]# ceph -s'//查看集群状态会发现有两个osd加入进来了'[root@ceph01 ceph]# ceph osd tree'//查看osd目录树'ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 1.99799 root default -3 0.99899 host ceph01 0 hdd 0.99899 osd.0 up 1.00000 1.00000 -5 0.99899 host ceph02 1 hdd 0.99899 osd.1 up 1.00000 1.00000 [root@ceph01 ceph]# ceph osd stat'//查看osd状态'2 osds: 2 up, 2 in; epoch: e9

将配置文件和admin秘钥下发到节点并给秘钥增加权限

[root@ceph01 ceph]# ceph-deploy admin ceph01 ceph02[root@ceph01 ceph]# chmod +r ceph.client.admin.keyring [root@ceph02 ceph]# chmod +r ceph.client.admin.keyring 2.3.3:扩容操作扩容ceph03节点的osd和mon[root@ceph01 ceph]# ceph-deploy osd create --data /dev/sdb ceph03[root@ceph01 ceph]# ceph -s'//已经有三个osd了'[root@ceph01 ceph]# vi ceph.conf [global]fsid = b175fb1a-fdd6-4c57-a41f-b2d964dff248mon_initial_members = ceph01, ceph02, ceph03'//添加ceph03'mon_host = mon_host = 192.168.100.9,192.168.100.11,192.168.100.70'//添加ceph03IP地址'auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxpublic network = 192.168.100.0/24'//添加内部通信网段'[root@ceph01 ceph]# ceph-deploy mon add ceph03'//添加mon' 重新下发秘钥和配置文件 [root@ceph01 ceph]# ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03[root@ceph01 ceph]# systemctl list-unit-files |grep mon'//查看已启动的含mon列表'ceph-mon@.service enabled lvm2-monitor.service enabled ceph-mon.target enabled

三台主机重启mon服务

[root@ceph01 ceph]# systemctl restart ceph-mon.target[root@ceph01 ceph]# ceph -s 4.5、模拟故障osd恢复

1、首先模拟故障,将一个osd从集群中移除

移除osd,删除osd,删除osd认证ceph osd out osd.2ceph osd crush remove osd.2ceph auth del osd.2 #重启所有节点osd服务,osd.2就down掉了systemctl restart ceph-osd.target


2、恢复osd到集群中

//在ceph03节点,查看ceph位置信息df -hT显示位置信息:tmpfs tmpfs 910M 52K 910M 1% /var/lib/ceph/osd/ceph-2//查看/var/lib/ceph/osd/ceph-2的fsid[root@ceph03 ~]# cd /var/lib/ceph/osd/ceph-2[root@ceph03 ceph-2]# more fsid57df2d3e-2f53-4143-9c3f-5e98d0ae619b//重新添加osd进入集群[root@ceph03 ceph-2]# ceph osd create 57df2d3e-2f53-4143-9c3f-5e98d0ae619b//重新添加认证权限[root@ceph03 ceph-2]# ceph auth add osd.2 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-2/keyring//设置ceph03的权重,ceph osd crush add osdID号 权重 host=主机名[root@ceph03 ceph-2]# ceph osd crush add 2 0.99899 host=ceph03//将osd加入集群[root@ceph03 ceph-2]# ceph osd in osd.2//重启所有节点的osd服务systemctl restart ceph-osd.target

通过ceph osd tree查看,ceph03的osd节点已经恢复了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。