Ceph简介
 
         Ceph是一款开源的 
 SDS 
 分布式存储,它具备极高的可用性、扩展性和易用性,可用于存  
 
 
 储海量数据 
 
 
          Ceph的存储节点可部署在通用服务器上,这些服务器的 
  CPU 
  可以是 
  x86 
  架构的,也可以  
 
 
  
  是 
  ARM 
  架构的。 
  Ceph 
  存储节点之间相互通信,以便对存储的数据进行动态复制和重分配  
 
 
  
 
 Ceph的技术优势
 
 ⚫  
 采用 
 RADOS 
 系统将所有数据作为对象,存储在存储池中  
 
 
 ⚫  
 使用 
 CRUSH 
 算法计算出对象所对应的存储位置  
 
 
 ⚫  
 去中心化,客户端可根据 
 CRUSH 
 算法自行计算出对象存储位置,然后进行数据读写  
 
 
 ⚫  
 集群可自动进行扩展、数据再平衡、数据恢复等 
 
 
Ceph的组件总览

 
 • MON 
 、 
 MGR 
 、 
 MDS 
 和 
 OSD 
 属于 
 ceph 
 的后端存储组件  
 
 
 • RADOSGW 
 、 
 RBD 
 、 
 CEPHFS 
 及 
 LIBRADOS 
 属于 
 ceph 
 的访问方式 
 
1、ceph的安装
192.168.186.100 ceph01.novalocal ceph01
192.168.186.101 ceph02.novalocal ceph02
192.168.186.102 ceph03.novalocal ceph03
192.168.186.103 Client1.1 前期准备
1、更改主机名
[root@localhost ~]# hostnamectl hostname ceph01.novalocal
[root@localhost ~]# hostnamectl hostname ceph02.novalocal
[root@localhost ~]# hostnamectl hostname ceph03.novalocal
2、更改hosts文件
[root@ceph02 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.100 ceph01.novalocal ceph01
192.168.186.101 ceph02.novalocal ceph02
192.168.186.102 ceph03.novalocal ceph03
3、添加完成后,在 ceph01 上 ping 各个主机名,保证网络通信正常。4、关闭防火墙和SElinux,配置时间同步
systemctl disable firewalld
yum install -y chrony
systemctl enable chronyd --now1.2 下载安装cephadm
1、安装git
[root@ceph01 ~]#dnf install -y git
[root@ceph01 ~]# git --version
git version 2.33.0
2、下载cephadm
[root@ceph01 ~]#git clone https://gitee.com/yftyxa/openeuler-cephadm.git
3、下载完成后,将下载到的 cephadm 复制到/usr/sbin/下,并为其添加可执行权限,具体命令为:
[root@ceph01 ~]# cp openeuler-cephadm/cephadm /usr/sbin && chmod a+x /usr/sbin/cephadm1.3 添加ceph所需要的yum源
[root@ceph01 ~]# vim /etc/yum.repos.d/ceph.repo 
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
 
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
 
[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=11.4 安装官方推荐容器引擎
1、在所有主机上使用以下命令添加容器引擎所需 yum 源:
[root@ceph01 ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
2、使用以下命令安装对应容器引擎
[root@ceph01 ~]# yum install podman-3.3.1-9.module_el8.5.0+988+b1f0b741.x86_64 lvm2 -y
3、完成后,重启所有主机2、 安装部署ceph集群
2.1 在ceph01上初始化ceph集群

2.2 为集群添加node节点
2、为集群添加 node 节点,使用以下命令创建 ceph 的管理容器
[root@ceph02 ~]# cephadm shell
3、使用以下命令生成集群公钥,并将其拷贝到剩余主机:
[root@ceph01 ~]# ssh-keygen  -t rsa
[root@ceph01 ~]# ssh-copy-id ceph02.novalocal 
[root@ceph01 ~]# ssh-copy-id ceph03.novalocal 4、使用以下命令将全部主机添加到集群内:
[ceph: root@ceph01 /]# ceph orch host add ceph02.novalocal
Added host 'ceph02.novalocal' with addr '192.168.186.101'
[ceph: root@ceph01 /]# ceph orch host add ceph03.novalocal
5、添加完成后,使用以下命令查看当前集群中主机状态:
[ceph: root@ceph01 /]# ceph orch host ls
HOST              ADDR             LABELS  STATUS  
ceph01.novalocal  192.168.186.100  _admin          
ceph02.novalocal  192.168.186.101                  
ceph03.novalocal  192.168.186.102                 
3 hosts in cluster
6、等待系统自动将服务部署到所有节点中(时间较长,请耐心等待),部署完成后状态如下:
[ceph: root@ceph01 /]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  107s ago   4d   count:1    
crash                           3/3  109s ago   4d   *          
grafana        ?:3000           1/1  107s ago   4d   count:1    
mgr                             2/2  109s ago   4d   count:2    
mon                             3/5  109s ago   4d   count:5    
node-exporter  ?:9100           1/3  109s ago   4d   *          
prometheus     ?:9095           1/1  107s ago   4d   count:1    
[ceph: root@ceph01 /]# 
7、使用以下命令取消 mon 服务的自动扩展功能:
[ceph: root@ceph01 /]# ceph orch apply mon --unmanaged=true
Scheduled mon update...
8、取消以后,mon 对应的“PLACEMENT”值变为“unmanaged”,如下图所示:
[ceph: root@ceph01 /]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT    
alertmanager   ?:9093,9094      1/1  3m ago     4d   count:1      
crash                           3/3  5m ago     4d   *            
grafana        ?:3000           1/1  3m ago     4d   count:1      
mgr                             2/2  5m ago     4d   count:2      
mon                             3/5  5m ago     93s  <unmanaged>  
node-exporter  ?:9100           1/3  5m ago     4d   *            
prometheus     ?:9095           1/1  3m ago     4d   count:1  
9、使用以下命令为 ceph02 和 ceph03 添加标签“_admin”:
[ceph: root@ceph01 /]#  ceph orch host label add ceph02.novalocal _admin
Added label _admin to host ceph02.novalocal
[ceph: root@ceph01 /]#  ceph orch host label add ceph03.novalocal _admin
Added label _admin to host ceph03.novalocal
10、使用以下命令将 mon 和 mgr 组件部署到指定节点中:
[ceph: root@ceph01 /]#  ceph orch apply mon --placement="label:_admin"
Scheduled mon update...
[ceph: root@ceph01 /]# ceph orch apply mgr --placement="label:_admin"
Scheduled mgr update...
2.3 添加OSD
1、使用以下命令,将所有主机上的硬盘添加为 OSD:
[ceph: root@ceph01 /]# ceph orch apply osd --all-available-devices
Scheduled osd.all-available-devices update...
2、添加完成后,使用命令“ceph orch ps”查看所有主机上的组件:
3、 其他 ceph 常用操作
3.1 移除服务
1、首先将 ceph02 中的服务筛选出来,具体命令如下

2、首先删除命令“ceph orch apply <name> --unmanaged=true”关闭集群组件的自动扩展,
[ceph: root@ceph01 /]# ceph orch apply crash --unmanaged=true
Scheduled crash update...
[ceph: root@ceph01 /]# ceph orch apply mon --unmanaged=true
Scheduled mon update...
[ceph: root@ceph01 /]# ceph orch apply mgr --unmanaged=true
Scheduled mgr update...
3、使用对应命令删除指定服务:
[ceph: root@ceph01 /]# ceph orch daemon rm crash.ceph02
Removed crash.ceph02 from host 'ceph02.novalocal'
[ceph: root@ceph01 /]# ceph orch daemon rm mon.ceph02 --force
Removed mon.ceph02 from host 'ceph02.novalocal' 
[ceph: root@ceph01 /]# ceph orch daemon rm mgr.ceph02.bkrmmo
Removed mgr.ceph02.bkrmmo from host 'ceph02.novalocal'
3.2 移除OSD
1、使用以下命令停止ceph02中的osd:
[ceph: root@ceph01 /]# ceph orch daemon stop osd.0
Scheduled to stop osd.0 on host 'ceph02.novalocal'
[ceph: root@ceph01 /]# ceph orch daemon stop osd.1
Scheduled to stop osd.1 on host 'ceph03.novalocal'
[ceph: root@ceph01 /]# ceph orch daemon stop osd.2
Scheduled to stop osd.2 on host 'ceph01.novalocal'
2、待所有osd停止后,使用以下命令移除osd:
[ceph: root@ceph01 /]# ceph osd rm 0
removed osd.0
[ceph: root@ceph01 /]# ceph osd rm 1
removed osd.1
[ceph: root@ceph01 /]# ceph osd rm 2
removed osd.2
[ceph: root@ceph01 /]# 
3、然后擦除对应磁盘的数据:
[ceph: root@ceph01 /]# ceph orch device zap ceph02.novalocal /dev/sdb --force
zap successful for /dev/sdb on ceph02.novalocal
4、最后删除CURSH的osd映射:
[ceph: root@ceph01 /]# ceph osd crush rm osd.0
removed item id 0 name 'osd.0' from crush map
5、等待CRUSH中的osd映射删除完成后,关闭自动osd部署功能,命令为:
[ceph: root@ceph01 /]# ceph orch apply osd --all-available-devices --unmanaged=true
Scheduled osd.all-available-devices update...
[ceph: root@ceph01 /]# ceph orch ls
NAME                       PORTS        RUNNING  REFRESHED  AGE  PLACEMENT    
alertmanager               ?:9093,9094      1/1  7m ago     5d   count:1      
crash                                       2/3  7m ago     35m  <unmanaged>  
grafana                    ?:3000           1/1  7m ago     5d   count:1      
mgr                                         2/2  7m ago     34m  <unmanaged>  
mon                                         2/5  7m ago     35m  <unmanaged>  
node-exporter              ?:9100           3/3  8m ago     5d   *            
osd.all-available-devices                     0  8m ago     12s  <unmanaged>  
prometheus                 ?:9095           1/1  7m ago     5d   count:1 





















