Ceph-deploy搭建ceph集群

Ceph介绍及安装

一、Ceph介绍

1.1 ceph说明

Ceph可用于为云平台提供Ceph对象存储、块存储、文件系统存储。所有Ceph存储集群部署都从设置每个Ceph节点开始,然后设置网络
不同存储的介绍
使用场景:

  • 块存储:在使用的时候需要格式化为指定的文件系统,然后挂载使用,其对操作系统的兼容性相对比较好(可以格式化为操作系统支持的文件系统),挂载的时候通常是每个服务单独分配独立的块存储,即各服务的块存储是独立且不共享使用的,如Redismasterslave的块存储是独立的、zookeeper各节点的块存储是独立的、Mysqlmasterslave的块存储是独立的、也可以用于私有云与公有云的虚拟机的系统盘和云盘等场景,上面的场景适合使用块存储。
  • cephFS:对于需要再多个主机实现数据共享的场景,比如多个nginx读取由多个tomcat写入到存储的数据,可以使用cephFS
  • 对象存储:而对于数据不会经常变化、删除和修改的场景,如短视频、APP下载等,可以使用对象存储

Ceph存储集群需要以下内容:至少一个Ceph Monitor和至少一个Ceph Manager,以及至少与Ceph集群中存储的给定对象的副本一样多的Ceph对象存储守护进程(OSD)(例如,如果给定对象的三个副本存储在Ceph集群中,则该Ceph集群中必须至少存在三个OSD)

Ceph支持EB(1EB=1000000000GB)级别的数据存储,ceph吧每一个待管理的数据流(文件等数据)切分为一到多个固定大小(默认4m)的对象数据,并以其为原子单元(原子是构成元素的最小单元)完成数据的读写
Ceph的底层存储服务是由多个存储主机(host)组成的存储集群,该集群也被称之为RADOS(reliable automatic distributed object store)存储集群,即可靠的、自动化的、分布式的对象存储系统。
librados是RADOS存储集群的API,支持C/C++/JAVA/python/ruby/php/go等编程语言的客户端。

在这里插入图片描述
在这里插入图片描述
Librados、radosgw、rbd、cephfs 统称为Ceph客户端接口。RADOSGW、RBD、Ceph FS 是基于 LIBRADOS 提供的多编程语言接口开发的
在这里插入图片描述

1.2 Ceph架构

ceph组成分为Mon、Mgr、OSD、MDS、RGW、管理节点等

  • monitorCeph监视器(ceph-mon)维护集群状态,包括监视器、管理器、OSD、MDS和CRUSH。这些是ceph守护进程相互协调所需的关键组件。监视器还负责管理守护进程和客户端之间的身份验证。通常至少需要三个监视器来实现冗余和高可用。
    • 主要作用
      • 维护集群状态、包括存储节点、池、用户等信息
      • 负责集群的配置管理和分发
      • 提供认证服务,确保客户端和守护进程的连接安全
    • 原理
      • Ceph Mon 使用Paxos分布式算法来保证数据的一致性和高可用性。多个监视器节点组成一个Quorum(法定人数),确保在监视器节点故障时仍然可以提供一致性的集群状态。
  • mgrCeph管理器(ceph-mgr)负责跟踪运行时指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph管理器守护进程还托管基于Python的模块来管理和公开Ceph集群信息,包括基于Web的Ceph的dashboard和REST API。通常至少需要两个管理器才能实现高可用性。(官方推荐每个mon配置一个Ceph mgr是最佳做法)
    • 原理: 通过插件机制扩展功能,可以执行各种管理任务,如集群状态监控、图形化页面支持等。它从Mon获取集群状态信息,并通过RESTful API提供管理接口。
  • Ceph OSD:对象存储守护进程(Ceph OSD)存储数据、处理数据复制、恢复、重新平衡,并通过检查其他Ceph OSD守护进程的心跳向Ceph OSD守护进程向Ceph监视器和管理器提供一些监视信息。通常至少需要3个OSD实现冗余和高可用性。
    • 原理:每个OSD守护进程管理一个存储设备(通常是一个硬盘或ssd)。OSD使用CRUSH算法确定数据的存储位置,从而避免了中心化的元数据原理,提升了系统的可扩展性。
  • MDSCeph元数据服务器(ceph-mds)存储Ceph文件系统的元数据。Ceph元数据服务器允许CephFS用户运行基础命令(如ls、find等),而不会给Ceph存储集群带来负担。
    • 元数据:指描述数据的数据,例如文件的路径、大小、创建时间、修改时间、权限等
    • 文件系统操作:MDS 处理文件系统操作请求,例如创建、删除、重命名文件或目录,修改权限等。这些操作涉及到对元数据的读取和修改
    • 缓存和优化:MDS 可以缓存频繁访问的元数据,以提高访问速度。它还会优化元数据的分布和存储,以提高文件系统的性能和可扩展性。
  • RGW:提供对象存储服务,兼容Amazon S3OpenStack Swift API ,支持多租户和与Ceph集成的认证和授权机制。
    • 原理:RGW充当一个HTTP服务器,处理客户端的RESTful请求,它将这些请求转换为RADOS操作,从而利用Ceph的分布式存储特性来提供高可用性和高性能的对象存储服务。
  • 管理节点:ceph的常用管理接口是一组命令行工具,例如rados、ceph、rbd等命令,ceph管理员可以从某个特定的mon节点执行管理操作。推荐使用部署专用的管理节点对ceph进行配置管理、升级与后期维护,方便后期权限管理,管理节点的权限只对管理人员开放,可以避免一些不必要的误操作的发生。

Ceph将数据作为对象存储在逻辑存储池中。使用CRUSH算法,Ceph计算哪个PG应包含该对象,以及那个OSD应存储该放置组。CRUSH算法是Ceph存储集群能够动态扩展、重新平衡和恢复

1.3 Ceph逻辑组织架构

1.3.1 Pool

Pool是Ceph中的逻辑存储空间,用于管理和隔离数据。一个Pool可以包含多个PG(Placement Group)并且可以有不同的配置参数,如副本数量、数据分布策略等。
Pool的作用:

  1. 数据隔离:可以为不同的应用或用户创建不同的Pool,实现数据的隔离和独立管理(类似k8s中的namespace
  2. 策略管理:不同的Pool可以有不同的复制策略、存储策略等,以满足不同的需求。
  3. 资源控制:通过Pool可以限制每个应用或用户的存储资源,避免资源争用情况。
1.3.2 PG

PG(Placement Group)是Ceph用于将对象分配到OSD的逻辑分组。每个PG可以存储多个对象,PG的数量是固定的,但可以动态映射到OSD上。
作用:

  1. 简化数据分布:通过将对象分配到PG,再将PG映射到OSD,简化了数据管理。
  2. 提高扩展性:通过动态映射PG到OSD,可以实现高效的扩展和负载均衡。
  3. 高可用性:PG有多个副本,分布在不同的OSD上,确保数据的高可用性。
1.3.3 PGP

PGP(Placement Group for Placement) 是进一步的细化概念,用于优化数据分布和负载均衡。PGP数量可以独立于PG进行调整,一般和PG数量保持一致。
作用:

  1. 优化数据分布:通过调整PGP数量,可以实现更均衡的数据分布。
  2. 渐进式扩展:当增加或减少OSD时,可以通过调整PGP数量实现平滑的扩展。

Ceph集群部署完成之后,要先创建存储池并指定PG数量,才能向Ceph写入数据,文件在向Ceph保存之前要先进行一致性Hash计算,计算好后会把文件保存在某个对应的PG上,此文件一定属于某个pool的一个PG,再通过PG保存在OSD上,数据对象在写到主OSD之后,再同步到从OSD以实现数据的高可用

Ceph数据写入详细过程:

  1. 通过Ceph客户端(例如librados)发送一个写请求到Ceph集群
  2. 对象到PG的映射:
    • 使用哈希函数将对象映射到一个特定的PG。
    • 哈希值由对象名和Pool ID计算得出
  3. PG到OSD的映射:
    • 使用CRUSH 算法将PG映射到几个OSD节点上。这些OSD节点组成一个副本集(称为PG副本)
    • CRUSH 算法考虑了集群拓扑结构、OSD容量和当前状态等因素,动态计算出数据的存储位置。
  4. 写请求到主OSD:
    • 写请求首先发送到PG副本集中的主OSD(Primary OSD)
    • 主OSD 是通过CRUSH算法确定的,它负责协调写入操作
  5. 主OSD的处理:
    • 主OSD接受到请求后,会将写请求转发到副本集中的其他OSD(称为次要OSD ,Secondary OSD)
    • 主OSD会生成一个事务,将写操作的细节,包括数据和元数据,封装成一个事务。
  6. 事务传播:
    - 主OSD将事务发送到次要OSD
    - 次要OSD接受到事务后,会将数据写入其本地存储,并准备提交事务
    7. 确认机制:
    - 次要OSD成功写入数据后,会发送确认消息(ACK)给主OSD
    - 主OSD在接受到所有次要OSD的确认消息后才会将事务标记为提交成功,然后会返回确认消息给客户端表示此次写操作完成。

在这里插入图片描述
在这里插入图片描述

Ceph对象数据的元数据以key-value的形式存在,在RADOS中有两种实现:xattrs和omap
Ceph可选后端支持多种存储引擎,比如filestore,bluestore,kvstore,memstore,ceph使用bluestore存储对象数据的元数据信息。
xattrs(扩展属性): 是将元数据保存在对象对应文件的扩展属性中并保存到系统磁盘上,这要求支持对象存储的本地文件系统(一般是XFS)支持扩展属性。
omap: 是object map的简称,是将元数据保存在本地文件系统之外的独立 key-value存储系统中,在使用filestore 时是leveldb,在使用bluestore时是rocksdb,由于filestore存在功能问题(需要将磁盘格式化为XFS格式)及元数据高可用问题等,因此在目前ceph使用bluestore

二、部署Ceph集群

github:https://github.com/ceph/ceph
历史版本: https://docs.ceph.com/en/latest/releases/index.html
Ceph 15 版本以后不再支持centos7 系统

2.1 部署方式:

ceph-ansiblehttps://github.com/ceph/ceph-ansible #python
ceph-salthttps://github.com/ceph/ceph-salt #python
ceph-containerhttps://github.com/ceph/ceph-container #shell
ceph-chefhttps://github.com/ceph/ceph-chef #Ruby
cephadm: https://docs.ceph.com/en/latest/cephadm/ #ceph 官方在 ceph 15 版本加入的Ceph部署工具
rook-ceph: https://rook.io/docs/rook/v1.14/Getting-Started/quickstart/#prerequisites # 也可以看我这篇文章
ceph-deployhttps://github.com/ceph/ceph-deploy #python
是一个ceph官方维护的基于ceph-deploy命令行部署ceph集群的工具,基于ssh执行可以sudo权限的shell命令以及一些python脚本实现ceph集群的部署和管理维护

Ceph-deploy 只用于部署和管理 ceph 集群,客户端需要访问 ceph,需要部署客户端工具。

2.2 服务器准备

官网推荐硬件:
https://docs.ceph.com/en/reef/start/hardware-recommendations/
硬件要求和建议

monitor、mgr、radosgw

4C 8G~16G(小型,专用虚拟机)、8C 16G~32G(中型,专用虚拟机)、16C ~32C 32G~64G(大型/超大型,专用物理机)

MDS(相对配置更高一个等级)

8C 8G~16G(小型,专用虚拟机)、16C 16G~32G(中型,专用虚拟机)、32C ~64C 64G~96G(大型、超大型,物理机)

OSD节点 CPU

每个 OSD 进程至少有一个 CPU 核心或以上,比如服务器一共 2 颗 CPU 每个 12 核心 24线程,那么服务器总计有 48 核心 CPU,这样最多最多最多可以放 48 块磁盘。(物理 CPU 数量每颗 CPU 核心) / OSD 磁盘数量 = X/每 OSD CPU 核心 >= 1 核心 CPU
比如:(2 颗
每颗 24 核心) / 24 OSD 磁盘数量= 2/每 OSD CPU 核心 >= 1 核心 CPU

OSD 节点内存

OSD 硬盘空间在 2T 或以内的时候每个硬盘 2G 内存,4T 的空间每个 OSD 磁盘 4G 内存,即大约每 1T 的磁盘空间(最少)分配 1G 的内存空间做数据读写缓存。
(总内存/OSD 磁盘总空间)= X > 1G 内存
比如: (总内存 128G/36T 磁盘总空间 )= 3G/每 T > 1G 内存

Ceph OSD 要以下条件:
1、目标磁盘不能有任何磁盘分区(例如不能有 sdb1/sdc2)。
2、目标磁盘不能有基于 PV/LV 创建的 LVM
3、目标磁盘不能被挂载到当前文件系统的任何目录。
4、目标磁盘不能包含文件系统(例如不能包含 ext4/xfs)。
5、目标磁盘不能包含 Ceph BlueStore OSD,会对磁盘进行全部擦除。
6、目标磁盘大小必须大于 5GB,Ceph 会自动为小于 5GB 的磁盘指定权重 0。

2.3 部署环境

我这是测试环境,所以配置都相对较低(8c16g),生产环境需要按照自己公司需求来定,每台服务器时间必须一致

2.3.1、四台服务器作为ceph集群osd存储服务器,每台服务器支持两个网络,public网络针对客户端访问,cluster网络用于集群管理及数据同步,每台三块或以上的磁盘
# 31段是public网络,91段是cluster网络
192.168.31.56/192.168.91.56
192.168.31.57/192.168.91.57
192.168.31.58/192.168.91.58
192.168.31.59/192.168.91.59
各存储服务器磁盘划分
/dev/nvme0n1
/dev/nvme0n2
/dev/nvme0n3
/dev/nvme0n4
各200G
2.3.2、三台服务器作为ceph集群的Mon监视服务器,每台服务器可以和ceph集群的cluster网络通信
192.168.31.51/192.168.91.51
192.168.31.52/192.168.91.52
192.168.31.53/192.168.91.53

2.3.3、两个ceph-mgr管理服务器,可以和ceph集群的cluster网络通信
192.168.31.54/192.168.91.54
192.168.31.55/192.168.91.55
2.3.4、一个服务器用于部署ceph集群,即安装ceph-deploy,也可以和ceph-mgr等复用
192.168.31.50/192.168.91.50
2.3.5、创建一个普通用户。能够通过sudo执行特权命令,配置主机名解析,ceph集群部署过程中需要对个主机配置不同的主机名,另外如果是centos系统则需要关闭各服务器的防火墙和selinux
2.3.6、网络环境:

https://docs.ceph.com/en/latest/rados/configuration/network-config-ref/#cluster-network
在这里插入图片描述

2.4 部署RADOS集群

https://mirrors.aliyun.com/ceph/ #阿里云镜像仓库
http://mirrors.163.com/ceph/ #网易镜像仓库
https://mirrors.tuna.tsinghua.edu.cn/ceph/ #清华大学镜像源

2.4.1 仓库准备

各节点配置ceph yum仓库:
导入key文件:

#支持 https 镜像仓库源:
apt install -y apt-transport-https ca-certificates curl software-properties-common
#导入 key:
wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -

Ubuntu 18.04.x/20.04.x/22.04.x:

18.04: bionic
~# cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe
multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main

# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list #pacific 代表 16 版本的 ceph

20.04: focal
# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-quincy focal main" >> /etc/apt/sources.list #代表 17 版本的 ceph
22.04:jammy
root@ceph-deploy:~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-reef jammy main" >> /etc/apt/sources.list #代表 18 版本的 ceph
root@ceph-deploy:~# apt update
2.4.2 创建ceph集群部署用户cephadmin

ceph推荐使用指定的普通用户部署和运行ceph集群,普通用户只要能以非交互方式执行sudo命令执行一些特权命令即可,新版的ceph-deploy可以指定包含root在内只要可以执行sudo命令的用户,不过仍然推荐使用普通用户,ceph集群安装完成会自动创建ceph用户(ceph集群默认会使用ceph用户运行个服务器进程,如ceph-osd等),因此推荐使用除了ceph用户之外的,比如cephusercephadmin这样的用户去部署和管理ceph集群

cephadmin仅用于通过ceph-deploy部署和管理ceph集群的时候使用,比如首次初始化集群部署集群添加节点删除节点等,ceph集群在node节点、mgr等节点会使用ceph用户启动进程

在这里插入图片描述
在这里插入图片描述
在包含ceph-deploy节点的存储节点、mon节点和mgr节点等创建cephadmin用户

[root@ceph-deploy ~]# groupadd -r -g 2088 cephadmin && useradd -r -m -s /bin/bash -u 2088 -g 2088 cephadmin && echo cephadmin:123456 | chpasswd

各服务器允许cephadmin用户以sudo执行特权命令

echo "cephadmin ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
#或者手动更改:
vim /etc/sudoers
root ALL=(ALL) ALL
cephadm ALL=(ALL) NOPASSWD: ALL

配置免密钥登录:
在ceph-deploy节点配置密钥分发,允许cephadmin用户以非交互的方式登录到各ceph node/mon/mgr 节点进行集群部署及管理操作,就是在ceph-deploy节点生成密钥对,然后分发公钥到各个服务器

[root@ceph-deploy ~]# su - cephadmin
[cephadmin@ceph-deploy ~]$ ssh-keygen
[cephadmin@ceph-deploy ~]$ cat copypub.sh
#!/bin/bash

# 定义起始和结束的 IP 后缀
start=50
end=59

# 循环遍历 IP 后缀
for i in $(seq $start $end); do
    # 构造完整的 IP 地址
    ip="192.168.91.$i"
    # 将 SSH 密钥复制到目标机器
    ssh-copy-id cephadmin@$ip
done
[cephadmin@ceph-deploy ~]$ sh copypub.sh

2.4.3 配置主机名解析
cephadmin@ceph-deploy:~$ cat /etc/hosts 
192.168.91.50 ceph-deploy.admin.local ceph-deploy
192.168.91.51 ceph-mon1.admin.local ceph-mon1
192.168.91.52 ceph-mon2.admin.local ceph-mon2
192.168.91.53 ceph-mon3.admin.local ceph-mon3
192.168.91.54 ceph-mgr1.admin.local ceph-mgr1
192.168.91.55 ceph-mgr2.admin.local ceph-mgr2
192.168.91.56 ceph-node1.admin.local ceph-node1
192.168.91.57 ceph-node2.admin.local ceph-node2
192.168.91.58 ceph-node3.admin.local ceph-node3
192.168.91.59 ceph-node4.admin.local ceph-node4
2.4.4 安装ceph部署工具

在ceph部署服务器安装部署工具ceph-deploy

ubuntu 2004/2204
[cephadmin@ceph-deploy ~]$ sudo apt install python2 
[cephadmin@ceph-deploy ~]$ sudo curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py
[cephadmin@ceph-deploy ~]$ sudo python2 get-pip.py

如果apt安装python2失败,可以编译安装,这里不多介绍

[cephadmin@ceph-deploy ~]$ sudo pip2 install ceph-deploy
[cephadmin@ceph-deploy ~]$ ceph-deploy --help # 验证命令存在并可以执行

ubuntu 1804:
~# sudo apt install python-pip #安装 python2 
~# sudo pip2 install ceph-deploy #使用 python2 的 pip 安装 ceph-deploy
或:
cephadmin@ceph-deploy:~$ apt-cache madison ceph-deploy
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main amd64 Packages
ceph-deploy | 2.0.1 | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main i386 Packages
ceph-deploy | 1.5.38-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe amd64 Packages
ceph-deploy | 1.5.38-0ubuntu1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic/universe i386 Packages
cephadmin@ceph-deploy:~$ sudo apt install ceph-deploy


Centos:
[cephadmin@ceph-deploy ~]$ sudo yum install ceph-deploy python-setuptools python2-subprocess3
2.4.5 初始化mon节点

在管理节点初始化mon

cephadmin@ceph-deploy:~$ mkdir ceph-cluster 
cephadmin@ceph-deploy:~$ cd ceph-cluster/
cephadmin@ceph-deploy:~/ceph-cluster$ 

cephadmin@ceph-deploy:~/ceph-cluster$  ceph-deploy --help
new:开始部署一个新的 ceph 存储集群,并生成 CLUSTER.conf 集群配置文件和 keyring认证文件。
install: 在远程主机上安装 ceph 相关的软件包, 可以通过--release 指定安装的版本。
rgw:管理 RGW 守护程序(RADOSGW,对象存储网关)。
mgr:管理 MGR 守护程序(ceph-mgr,Ceph Manager DaemonCeph 管理器守护程序)。
mds:管理 MDS 守护程序(Ceph Metadata Server,ceph 源数据服务器)。
mon:管理 MON 守护程序(ceph-mon,ceph 监视器)。
gatherkeys:从指定获取提供新节点的验证 keys,这些 keys 会在添加新的 MON/OSD/MD加入的时候使用。
disk:管理远程主机磁盘。
osd:在远程主机准备数据磁盘,即将指定远程主机的指定磁盘添加到 ceph 集群作为 osd使用。
repo: 远程主机仓库管理。
admin:推送 ceph 集群配置文件和 client.admin 认证文件到远程主机。
config:将 ceph.conf 配置文件推送到远程主机或从远程主机拷贝。
uninstall:从远端主机删除安装包。
purgedata:从/var/lib/ceph 删除 ceph 数据,会删除/etc/ceph 下的内容。
purge: 删除远端主机的安装包和所有数据。
forgetkeys:从本地主机删除所有的验证 keyring, 包括 client.admin, monitor, bootstrap 等认证文件。
pkg: 管理远端主机的安装包。
calamari:安装并配置一个 calamari web 节点,calamari 是一个 web 监控平台。

初始化mon节点过程如下:
Ubuntu个服务器需要单独安装Python2

root@ceph-mon1:~#sudo apt install python2.7 -y
root@ceph-mon1:~#sudo ln -sv /usr/bin/python2.7 /usr/bin/python2

在部署节点执行:

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy new --cluster-network 192.168.91.0/24 --public-network 192.168.31.0/24 ceph-mon1.example.local

执行完成之后,会在ceph-cluster目录下生成以下文件

[cephadmin@ceph-deploy ceph-cluster]$ ll
total 16
-rw-rw-r-- 1 cephadmin cephadmin 263 Oct 21 14:24 ceph.conf #自动生成的配置文件
-rw-rw-r-- 1 cephadmin cephadmin 7096 Oct 21 14:24 ceph-deploy-ceph.log #初始化日志
-rw------- 1 cephadmin cephadmin 73 Oct 21 14:24 ceph.mon.keyring #用于 cephmon 节点内部通讯认证的秘钥环文件
cephadmin@ceph-deploy:~/ceph-cluster$ cat ceph.conf 
[global]
fsid = 74d6f368-8875-4340-857f-0daa3e96b5dc
public_network = 192.168.31.0/24
cluster_network = 192.168.91.0/24
mon_initial_members = ceph-mon1,ceph-mon2,ceph-mon3
mon_host = 192.168.31.51,192.168.31.52,192.168.31.53
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
2.4.6 初始化ceph存储节点

初始化存储节点等于在存储节点安装了ceph及ceph-rodsgw安装包,但是使用默认的官方仓库会因为网络原因初始化曹氏,因此各存储节点推荐修改ceph仓库为阿里或清华源。

2.4.6.1 修改ceph镜像源

各节点都需要配置清华的ceph镜像源
ceph-octopus 版本(15):

~# cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-octopus bionic main

Ceph-pacific版本(16)Ubuntu 18.04:

~# cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main

Ceph-quincy版本(17)ubuntu2004:

$ cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universemultiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricteduniverse multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-quincy focal main

Ceph-reef版本(18)ubuntu2204:

root@ceph-node4:~# cat /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universemultiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricteduniverse multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-reef jammy main
2.4.6.2 初始化node节点

此步骤必须执行,否则ceph集群的后续安装步骤会报错:

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3 ceph-node4
# --no-adjust-repos #不修改已有的 apt 仓库源(默认会使用官方仓库)
# --nogpgcheck #不进行校验

在这里插入图片描述
此过程会在指定的ceph node节点按照串行的方式逐个服务器安装ceph-base ceph-common等组件包,上图就已经是安装完成了

2.4.7 安装Ceph-mon 服务

在各mon节点按照组件ceph-mon ,并通过初始化mon节点,mon节点HA还可以后期横向扩容

2.4.7.1 安装ceph-mon

Ubuntu安装ceph-mon

root@ceph-mon1:~# apt-cache madison ceph-mon
ceph-mon | 18.2.2-1jammy | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-reef jammy/main amd64 Packages ceph-mon | 17.2.7-0ubuntu0.22.04.1 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 Packages ceph-mon | 17.2.6-0ubuntu0.22.04.3 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-security/main amd64 Packages ceph-mon | 17.1.0-0ubuntu3 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 Packages
root@ceph-mon1:~# apt install ceph-mon -y
root@ceph-mon2:~# apt install ceph-mon -y
root@ceph-mon3:~# apt install ceph-mon -y
2.4.7.2 ceph集群添加ceph-mon服务
[cephadmin@ceph-deploy ceph-cluster]$ pwd
/home/ceph/ceph-cluster
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy mon create-initial

在这里插入图片描述

2.4.8 验证mon节点

验证在mon节点已经自动安装并启动了ceph-mon服务,并且后期再ceph-deploy节点初始化目录会生成一些bootstrap ceph mds/mgr/osd/rgw等服务的keyring认证文件,这些初始化文件拥有对ceph集群的最高权限,所以一定要保存好。

[root@ceph-mon1 ~]# ps -ef | grep ceph-mon
ceph 4526 1 0 16:47 ? 00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id ceph-mon1 --setuser ceph --setgroup ceph
2.4.9 分发admin密钥

在ceph-deploy节点吧配置文件和admin密钥拷贝Ceph集群需要执行ceph管理命令的节点,从而不需要后期通过ceph命令对ceph集群进行管理配置的时候每次都需要指定ceph-mon节点地址和ceph.client.admin.keyring文件,另外各ceph-mon节点也需要同步ceph的集群配置文件与认证文件。

cephadmin@ceph-deploy:~/ceph-cluster$ sudo apt install ceph-common #先安装 ceph的公共组件
root@ceph-node1:~# apt install ceph-common -y #node 节点在初始化时已经安装
root@ceph-node2:~# apt install ceph-common -y
root@ceph-node3:~# apt install ceph-common -y
root@ceph-node4:~# apt install ceph-common -y
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph-node4

在这里插入图片描述

2.4.10 ceph node节点验证密钥

到node节点验证key文件

root@ceph-node2:~# ll /etc/ceph/
total 28
drwxr-xr-x   2 root root  4096  8月 29 16:32 ./
drwxr-xr-x 135 root root 12288  8月 27 15:51 ../
-rw-------   1 root root   151  8月 29 16:32 ceph.client.admin.keyring
-rw-r--r--   1 root root   315  8月 29 16:32 ceph.conf
-rw-r--r--   1 root root    92  7月 12 23:42 rbdmap
-rw-------   1 root root     0  8月 27 15:56 tmpcCeCBe

认证文件的属主和属组为了安全考虑,默认设置为root用户和root组,如果需要ceph用户也能执行ceph命令,就需要对ceph用户进行授权

root@ceph-node1:~# sudo apt install acl
root@ceph-node1:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node2:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node3:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
root@ceph-node4:~# setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring
2.4.11 部署ceph-mgr节点

mgr节点需要读取ceph的配置文件,即/etc/ceph目录中的配置文件

#初始化 ceph-mgr 节点:
[root@ceph-mgr1 ~]# apt install ceph-mgr
# 管理节点执行
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr1
2.4.12 验证ceph-mgr节点
root@ceph-mgr1:~/Python-2.7.18# ps -ef |grep mgr
ceph       67421       1  0 8月27 ?       00:17:23 /usr/bin/ceph-mgr -f --cluster ceph --id ceph-mgr1 --setuser ceph --setgroup ceph
root       71464    3097  0 16:36 pts/3    00:00:00 grep --color=auto mgr
2.4.13 ceph-deploy管理ceph集群

在ceph-deploy节点配置一下系统环境,以方便后期可以执行ceph管理命令

[cephadmin@ceph-deploy ceph-cluster]$ sudo apt install ceph-common
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-deploy #推送证书给自己
2.4.14 测试ceph命令
cephadmin@ceph-deploy:~/ceph-cluster$ sudo setfacl -m u:cephadmin:rw /etc/ceph/ceph.client.admin.keyring #授权

cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s 
  cluster:
    id:     74d6f368-8875-4340-857f-0daa3e96b5dc
    health: HEALTH_WARN
            mons are allowing insecure global_id reclaim  #需要禁用非安全模式通信
            1 pool(s) do not have an application enabled  
 
  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 2d)
    mgr: ceph-mgr1(active, since 2d)
    osd: 16 osds: 16 up (since 47h), 16 in (since 2d)
 
  data:
    pools:   3 pools, 97 pgs
    objects: 5 objects, 14 MiB
    usage:   510 MiB used, 3.1 TiB / 3.1 TiB avail
    pgs:     97 active+clean
 
 # 查看ceph版本
 cephadmin@ceph-deploy:~/ceph-cluster$ ceph versions
{
    "mon": {
        "ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)": 3
    },
    "mgr": {
        "ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)": 1
    },
    "osd": {
        "ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)": 16
    },
    "overall": {
        "ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)": 20
    }
}
2.4.15 初始化存储节点

osd节点安装运行环境

#node 节点、ubuntu 2004、2204 系统单独安装 ceph-volume,负责无法初始化
cephadmin@ceph-node1:~$ sudo apt install ceph-volume -y
cephadmin@ceph-node2:~$ sudo apt install ceph-volume -y
cephadmin@ceph-node3:~$ sudo apt install ceph-volume -y
cephadmin@ceph-node4:~$ sudo apt install ceph-volume -y
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy install --release reef ceph-node1 #擦除磁盘之前通过 deploy 节点对 node 节点执行安装 ceph 基本运行环境
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy install --release reef ceph-node2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy install --release reef ceph-node3
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy install --release reef ceph-node4
root@ceph-node2:~# apt autoremove #node 节点可选删除不需要的包

在这里插入图片描述
列出ceph node节点磁盘

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy  disk list ceph-node1
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephadmin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/local/bin/ceph-deploy disk list ceph-node1
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  debug                         : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : list
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7e42c688a910>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  host                          : ['ceph-node1']
[ceph_deploy.cli][INFO  ]  func                          : <function disk at 0x7e42c68df0d0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph-node1][DEBUG ] connection detected need for sudo
[ceph-node1][DEBUG ] connected to host: ceph-node1 
[ceph-node1][DEBUG ] detect platform information from remote host
[ceph-node1][DEBUG ] detect machine type
[ceph-node1][DEBUG ] find the location of an executable
[ceph-node1][INFO  ] Running command: sudo fdisk -l
[ceph-node1][INFO  ] Disk /dev/loop1: 4 KiB, 4096 bytes, 8 sectors
[ceph-node1][INFO  ] Disk /dev/loop2: 74.27 MiB, 77881344 bytes, 152112 sectors
[ceph-node1][INFO  ] Disk /dev/loop3: 266.63 MiB, 279584768 bytes, 546064 sectors
[ceph-node1][INFO  ] Disk /dev/loop4: 496.98 MiB, 521121792 bytes, 1017816 sectors
[ceph-node1][INFO  ] Disk /dev/loop5: 91.69 MiB, 96141312 bytes, 187776 sectors
[ceph-node1][INFO  ] Disk /dev/loop6: 40.43 MiB, 42393600 bytes, 82800 sectors
[ceph-node1][INFO  ] Disk /dev/loop7: 12.32 MiB, 12922880 bytes, 25240 sectors
[ceph-node1][INFO  ] Disk /dev/nvme0n1: 200 GiB, 214748364800 bytes, 419430400 sectors
[ceph-node1][INFO  ] Disk /dev/nvme0n2: 200 GiB, 214748364800 bytes, 419430400 sectors
[ceph-node1][INFO  ] Disk /dev/nvme0n3: 200 GiB, 214748364800 bytes, 419430400 sectors
[ceph-node1][INFO  ] Disk /dev/nvme0n4: 200 GiB, 214748364800 bytes, 419430400 sectors
[ceph-node1][INFO  ] Disk /dev/sda: 200 GiB, 214748364800 bytes, 419430400 sectors
[ceph-node1][INFO  ] Disk /dev/loop8: 38.83 MiB, 40714240 bytes, 79520 sectors
[ceph-node1][INFO  ] Disk /dev/loop9: 452 KiB, 462848 bytes, 904 sectors
[ceph-node1][INFO  ] Disk /dev/loop10: 505.09 MiB, 529625088 bytes, 1034424 sectors
[ceph-node1][INFO  ] Disk /dev/mapper/ceph--d377304c--aac2--4933--be0f--170ddccaf1af-osd--block--65296b4d--6b27--4ae4--b08d--16c0688527be: 200 GiB, 214744170496 bytes, 419422208 sectors
[ceph-node1][INFO  ] Disk /dev/mapper/ceph--6e8da6a9--3ce1--4423--9f67--e734492be7d8-osd--block--d6072f55--01bf--4d7e--9599--20efbd33e8dd: 200 GiB, 214744170496 bytes, 419422208 sectors
[ceph-node1][INFO  ] Disk /dev/mapper/ceph--dd711eb2--594b--4372--9f7c--b4c5f4832525-osd--block--3510c172--c22a--4420--a19a--d950eed8f7da: 200 GiB, 214744170496 bytes, 419422208 sectors
[ceph-node1][INFO  ] Disk /dev/mapper/ceph--05d504d1--667e--421b--b330--bdd2c9f0ac05-osd--block--5799cdbe--5916--4e65--850a--76a7623b75a9: 200 GiB, 214744170496 bytes, 419422208 sectors
[ceph-node1][INFO  ] Disk /dev/loop11: 269.77 MiB, 282873856 bytes, 552488 sectors
[ceph-node1][INFO  ] Disk /dev/loop12: 74.27 MiB, 77881344 bytes, 152112 sectors

/dev/nvme0n1~4 是我们的ceph数据盘,使用ceph-deploy disk zap 擦除各ceph node 的ceph数据磁盘:

cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/nvme0n1
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/nvme0n2
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/nvme0n3
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node1 /dev/nvme0n4

cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/nvme0n1
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/nvme0n2
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/nvme0n3
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node2 /dev/nvme0n4

cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/nvme0n1
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/nvme0n2
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/nvme0n3
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node3 /dev/nvme0n4

cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n1
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n2
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n3
cephadmin@ceph-deploy:/home/ceph/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n4

在这里插入图片描述

2.4.16 添加OSD
2.4.16.1 数据分类保存

Data: 即ceph保存的对象数据
Block:rocks DB数据,即元数据
block-wal:数据库的wal日志,预写式日志
可以将元数据、对象数据、预写式日志分别存放,不放在一起

ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device
ceph-deploy osd create {node} --data /path/to/data --block-wal /path/to/wal-device
ceph-deploy osd create {node} --data /path/to/data --block-wal /path/to/wal-device --block-db /path/to/db-device

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd --help
usage: ceph-deploy osd [-h] {list,create} ... Create OSDs from a data disk on a remote host:
ceph-deploy osd create {node} --data /path/to/device
For bluestore, optional devices can be used::
ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device
ceph-deploy osd create {node} --data /path/to/data --block-wal /path/to/wal-device
ceph-deploy osd create {node} --data /path/to/data --block-db /path/to/db-device --block-wal /path/to/wal-device
For filestore, the journal must be specified, as well as the objectstore::
ceph-deploy osd create {node} --filestore --data /path/to/data --journal /path/to/journal #使用 filestor的数据和文件系统的日志的路径,journal是 systemd的一个组
件,用于捕获系统日志信息、内核日志信息、磁盘的日志信息等,
For data devices, it can be an existing logical volume in the format of:
vg/lv, or a device. For other OSD components like wal, db, and journal, it
can be logical volume (in vg/lv format) or it must be a GPT partition. positional arguments:
{list,create}
list List OSD info from remote host(s)
create Create new Ceph OSD daemon by preparing and activating a device
optional arguments: -h, --help show this help message and exit
2.4.16.2 添加osd
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node1 --data /dev/nvme0n1
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node1 --data /dev/nvme0n2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node1 --data /dev/nvme0n3
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node1 --data /dev/nvme0n4

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node2 --data /dev/nvme0n1
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node2 --data /dev/nvme0n2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node2 --data /dev/nvme0n3
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node2 --data /dev/nvme0n4

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node3 --data /dev/nvme0n1
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node3 --data /dev/nvme0n2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node3 --data /dev/nvme0n3
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node3 --data /dev/nvme0n4

[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node4 --data /dev/nvme0n1
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node4 --data /dev/nvme0n2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node4 --data /dev/nvme0n3
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy osd create ceph-node4 --data /dev/nvme0n4

在这里插入图片描述
添加之后可以到osd节点查看进程是否已经启动

root@ceph-node1:~# ps -ef |grep ceph-osd
ceph       15629       1  0 8月27 ?       00:22:52 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
ceph       17191       1  0 8月27 ?       00:26:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
ceph       18755       1  0 8月27 ?       00:21:17 /usr/bin/ceph-osd -f --cluster ceph --id 2 --setuser ceph --setgroup ceph
ceph       20316       1  0 8月27 ?       00:24:55 /usr/bin/ceph-osd -f --cluster ceph --id 3 --setuser ceph --setgroup ceph
root       24261    4010  0 15:39 pts/2    00:00:00 grep --color=auto ceph-osd
2.4.17 验证ceph集群

如果有下面的警告,可以执行

cephadmin@ceph-deploy:~/ceph-cluster$ ceph health
HEALTH_WARN mons are allowing insecure global_id reclaim
cephadmin@ceph-deploy:~/ceph-cluster$ ceph config set mon auth_allow_insecure_global_id_reclaim  false 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph config get mon auth_allow_insecure_global_id_reclaim
false
cephadmin@ceph-deploy:~/ceph-cluster$ 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph health
HEALTH_OK
2.4.18 从RADOS移出OSD

Ceph集群中的一个OSD是一个node节点的服务进程且对于一个物理磁盘设备,是一个专用的守护进程。在某个osd设备出现故障,或管理员处于管理需要移出特定的osd设备,需要先停止相关的守护进程,而后再进行移出操作,对于Luminous及其之后的版本来说,停止和移出命令的格式为:

1. 停用设备:ceph osd out {osd-num}
2. 停止进程:sudo systemctl stop ceph-osd@{osd-num}
3. 移除设备:ceph osd purge {id} --yes-i-really-mean-it

比如,我这里要停止第15块osd:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd ls 
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd out 15
marked out osd.15. 
# 然后需要到此osd的节点上停止进程,我id等于15的osd是在node4上面
root@ceph-node4:~# sudo systemctl stop ceph-osd@1
ceph-osd@12.service  ceph-osd@13.service  ceph-osd@14.service  ceph-osd@15.service  
root@ceph-node4:~# sudo systemctl stop ceph-osd@15.service 
# 然后再回到deploy节点
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd purge 15 --yes-i-really-mean-it
purged osd.15
cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s 
  cluster:
    id:     74d6f368-8875-4340-857f-0daa3e96b5dc
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 2d)
    mgr: ceph-mgr1(active, since 2d)
    osd: 15 osds: 15 up (since 104s), 15 in (since 118s)
 
  data:
    pools:   2 pools, 65 pgs
    objects: 3 objects, 577 KiB
    usage:   454 MiB used, 2.9 TiB / 2.9 TiB avail
    pgs:     65 active+clean
# 这样id等与15的osd就被剔除ceph集群了
cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd ls
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

如果想再把此osd加入呢,执行擦除命令发现会报错

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n4
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephadmin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/local/bin/ceph-deploy disk zap ceph-node4 /dev/nvme0n4
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  debug                         : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : zap
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7c728efcf910>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  host                          : ceph-node4
[ceph_deploy.cli][INFO  ]  func                          : <function disk at 0x7c728f0240d0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  disk                          : ['/dev/nvme0n4']
[ceph_deploy.osd][DEBUG ] zapping /dev/nvme0n4 on ceph-node4
[ceph-node4][DEBUG ] connection detected need for sudo
[ceph-node4][DEBUG ] connected to host: ceph-node4 
[ceph-node4][DEBUG ] detect platform information from remote host
[ceph-node4][DEBUG ] detect machine type
[ceph-node4][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: debian bookworm/sid sid
[ceph-node4][DEBUG ] zeroing last few blocks of device
[ceph-node4][DEBUG ] find the location of an executable
[ceph-node4][INFO  ] Running command: sudo /usr/sbin/ceph-volume lvm zap /dev/nvme0n4
[ceph-node4][WARNIN] --> Zapping: /dev/nvme0n4
[ceph-node4][WARNIN] --> Zapping lvm member /dev/nvme0n4. lv_path is /dev/ceph-2856f07e-d133-4b30-9037-8b651f4965b4/osd-block-6e15447a-62a2-44dc-9717-462aa8bbbd4b
[ceph-node4][WARNIN] --> Unmounting /var/lib/ceph/osd/ceph-15
[ceph-node4][WARNIN] Running command: /usr/bin/umount -v /var/lib/ceph/osd/ceph-15
[ceph-node4][WARNIN]  stderr: umount: /var/lib/ceph/osd/ceph-15 unmounted
[ceph-node4][WARNIN] Running command: /usr/bin/dd if=/dev/zero of=/dev/ceph-2856f07e-d133-4b30-9037-8b651f4965b4/osd-block-6e15447a-62a2-44dc-9717-462aa8bbbd4b bs=1M count=10 conv=fsync
[ceph-node4][WARNIN]  stderr: 10+0 records in
[ceph-node4][WARNIN] 10+0 records out
[ceph-node4][WARNIN] 10485760 bytes (10 MB, 10 MiB) copied, 0.0385965 s, 272 MB/s
[ceph-node4][WARNIN] --> --destroy was not specified, but zapping a whole device will remove the partition table
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN]  stderr: wipefs: error: /dev/nvme0n4: probing initialization failed: Device or resource busy
[ceph-node4][WARNIN] --> failed to wipefs device, will try again to workaround probable race condition
[ceph-node4][WARNIN] -->  RuntimeError: could not complete wipefs on device: /dev/nvme0n4
[ceph-node4][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: /usr/sbin/ceph-volume lvm zap /dev/nvme0n4

# 到node4节点查看发现还有一个LVM逻辑卷
root@ceph-node4:~# lsblk 
NAME                                                                          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
fd0                                                                             2:0    1     4K  0 disk 
loop0                                                                           7:0    0     4K  1 loop /snap/bare/5
loop1                                                                           7:1    0 505.1M  1 loop /snap/gnome-42-2204/176
loop2                                                                           7:2    0  74.3M  1 loop /snap/core22/1564
loop3                                                                           7:3    0 266.6M  1 loop /snap/firefox/3836
loop4                                                                           7:4    0   497M  1 loop /snap/gnome-42-2204/141
loop5                                                                           7:5    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop6                                                                           7:6    0  12.3M  1 loop /snap/snap-store/959
loop7                                                                           7:7    0  40.4M  1 loop /snap/snapd/20671
loop8                                                                           7:8    0  38.8M  1 loop /snap/snapd/21759
loop9                                                                           7:9    0   452K  1 loop /snap/snapd-desktop-integration/83
loop10                                                                          7:10   0   500K  1 loop /snap/snapd-desktop-integration/178
loop11                                                                          7:11   0 269.8M  1 loop /snap/firefox/4793
loop12                                                                          7:12   0  74.3M  1 loop /snap/core22/1586
sda                                                                             8:0    0   200G  0 disk 
├─sda1                                                                          8:1    0     1M  0 part 
├─sda2                                                                          8:2    0   513M  0 part /boot/efi
└─sda3                                                                          8:3    0 199.5G  0 part /var/snap/firefox/common/host-hunspell
                                                                                                        /
sr0                                                                            11:0    1  1024M  0 rom  
sr1                                                                            11:1    1   4.7G  0 rom  
nvme0n1                                                                       259:0    0   200G  0 disk 
└─ceph--91ca3005--3236--42ed--aca3--5d3e12b9d450-osd--block--a91c2921--c0b5--49f9--a66b--3f2fc9cb0a96
                                                                              252:0    0   200G  0 lvm  
nvme0n2                                                                       259:1    0   200G  0 disk 
└─ceph--215e765e--f973--401e--8b67--45c1fb5fb720-osd--block--1f31063d--ad5d--40bf--89de--7e2e87d3dc66
                                                                              252:1    0   200G  0 lvm  
nvme0n3                                                                       259:2    0   200G  0 disk 
└─ceph--e94e1d82--285f--4134--bd12--2fdabb689efe-osd--block--011ff4dd--c8ec--42ed--9f67--50ad01b9be67
                                                                              252:2    0   200G  0 lvm  
nvme0n4                                                                       259:3    0   200G  0 disk 
└─ceph--2856f07e--d133--4b30--9037--8b651f4965b4-osd--block--6e15447a--62a2--44dc--9717--462aa8bbbd4b
                                                                              252:3    0   200G  0 lvm  
# 查看设备可能被设备映射器使用,查看列表
root@ceph-node4:~# dmsetup ls 
ceph--215e765e--f973--401e--8b67--45c1fb5fb720-osd--block--1f31063d--ad5d--40bf--89de--7e2e87d3dc66     (252:1)
ceph--2856f07e--d133--4b30--9037--8b651f4965b4-osd--block--6e15447a--62a2--44dc--9717--462aa8bbbd4b     (252:3)
ceph--91ca3005--3236--42ed--aca3--5d3e12b9d450-osd--block--a91c2921--c0b5--49f9--a66b--3f2fc9cb0a96     (252:0)
ceph--e94e1d82--285f--4134--bd12--2fdabb689efe-osd--block--011ff4dd--c8ec--42ed--9f67--50ad01b9be67     (252:2)
# 从设备映射器中删除
root@ceph-node4:~# dmsetup remove  ceph--2856f07e--d133--4b30--9037--8b651f4965b4-osd--block--6e15447a--62a2--44dc--9717--462aa8bbbd4b
root@ceph-node4:~# 
root@ceph-node4:~# lsblk 
NAME                                                                          MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
fd0                                                                             2:0    1     4K  0 disk 
loop0                                                                           7:0    0     4K  1 loop /snap/bare/5
loop1                                                                           7:1    0 505.1M  1 loop /snap/gnome-42-2204/176
loop2                                                                           7:2    0  74.3M  1 loop /snap/core22/1564
loop3                                                                           7:3    0 266.6M  1 loop /snap/firefox/3836
loop4                                                                           7:4    0   497M  1 loop /snap/gnome-42-2204/141
loop5                                                                           7:5    0  91.7M  1 loop /snap/gtk-common-themes/1535
loop6                                                                           7:6    0  12.3M  1 loop /snap/snap-store/959
loop7                                                                           7:7    0  40.4M  1 loop /snap/snapd/20671
loop8                                                                           7:8    0  38.8M  1 loop /snap/snapd/21759
loop9                                                                           7:9    0   452K  1 loop /snap/snapd-desktop-integration/83
loop10                                                                          7:10   0   500K  1 loop /snap/snapd-desktop-integration/178
loop11                                                                          7:11   0 269.8M  1 loop /snap/firefox/4793
loop12                                                                          7:12   0  74.3M  1 loop /snap/core22/1586
sda                                                                             8:0    0   200G  0 disk 
├─sda1                                                                          8:1    0     1M  0 part 
├─sda2                                                                          8:2    0   513M  0 part /boot/efi
└─sda3                                                                          8:3    0 199.5G  0 part /var/snap/firefox/common/host-hunspell
                                                                                                        /
sr0                                                                            11:0    1  1024M  0 rom  
sr1                                                                            11:1    1   4.7G  0 rom  
nvme0n1                                                                       259:0    0   200G  0 disk 
└─ceph--91ca3005--3236--42ed--aca3--5d3e12b9d450-osd--block--a91c2921--c0b5--49f9--a66b--3f2fc9cb0a96
                                                                              252:0    0   200G  0 lvm  
nvme0n2                                                                       259:1    0   200G  0 disk 
└─ceph--215e765e--f973--401e--8b67--45c1fb5fb720-osd--block--1f31063d--ad5d--40bf--89de--7e2e87d3dc66
                                                                              252:1    0   200G  0 lvm  
nvme0n3                                                                       259:2    0   200G  0 disk 
└─ceph--e94e1d82--285f--4134--bd12--2fdabb689efe-osd--block--011ff4dd--c8ec--42ed--9f67--50ad01b9be67
                                                                              252:2    0   200G  0 lvm  
nvme0n4                                                                       259:3    0   200G  0 disk 
# 移出逻辑卷
root@ceph-node4:~# sudo lvremove /dev/ceph-2856f07e-d133-4b30-9037-8b651f4965b4/osd-block-6e15447a-62a2-44dc-9717-462aa8bbbd4b
Do you really want to remove and DISCARD logical volume ceph-2856f07e-d133-4b30-9037-8b651f4965b4/osd-block-6e15447a-62a2-44dc-9717-462aa8bbbd4b? [y/n]: y
  Logical volume "osd-block-6e15447a-62a2-44dc-9717-462aa8bbbd4b" successfully removed

# 然后再在deploy节点抹除
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy disk zap ceph-node4 /dev/nvme0n4
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephadmin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/local/bin/ceph-deploy disk zap ceph-node4 /dev/nvme0n4
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  debug                         : False
[ceph_deploy.cli][INFO  ]  overwrite_conf                : False
[ceph_deploy.cli][INFO  ]  subcommand                    : zap
[ceph_deploy.cli][INFO  ]  quiet                         : False
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x7c757e28a910>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  host                          : ceph-node4
[ceph_deploy.cli][INFO  ]  func                          : <function disk at 0x7c757e2df0d0>
[ceph_deploy.cli][INFO  ]  ceph_conf                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  disk                          : ['/dev/nvme0n4']
[ceph_deploy.osd][DEBUG ] zapping /dev/nvme0n4 on ceph-node4
[ceph-node4][DEBUG ] connection detected need for sudo
[ceph-node4][DEBUG ] connected to host: ceph-node4 
[ceph-node4][DEBUG ] detect platform information from remote host
[ceph-node4][DEBUG ] detect machine type
[ceph-node4][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO  ] Distro info: debian bookworm/sid sid
[ceph-node4][DEBUG ] zeroing last few blocks of device
[ceph-node4][DEBUG ] find the location of an executable
[ceph-node4][INFO  ] Running command: sudo /usr/sbin/ceph-volume lvm zap /dev/nvme0n4
[ceph-node4][WARNIN] --> Zapping: /dev/nvme0n4
[ceph-node4][WARNIN] --> --destroy was not specified, but zapping a whole device will remove the partition table
[ceph-node4][WARNIN] Running command: /usr/bin/dd if=/dev/zero of=/dev/nvme0n4 bs=1M count=10 conv=fsync
[ceph-node4][WARNIN]  stderr: 10+0 records in
[ceph-node4][WARNIN] 10+0 records out
[ceph-node4][WARNIN] 10485760 bytes (10 MB, 10 MiB) copied, 0.0296094 s, 354 MB/s
[ceph-node4][WARNIN] --> Zapping successful for: <Raw Device: /dev/nvme0n4>
# 再次将osd添加到ceph
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy osd create ceph-node4 --data /dev/nvme0n4
[ceph_deploy.conf][DEBUG ] found configuration file at: /home/cephadmin/.cephdeploy.conf
[ceph_deploy.cli][INFO  ] Invoked (2.0.1): /usr/local/bin/ceph-deploy osd create ceph-node4 --data /dev/nvme0n4
[ceph_deploy.cli][INFO  ] ceph-deploy options:
[ceph_deploy.cli][INFO  ]  verbose                       : False
[ceph_deploy.cli][INFO  ]  bluestore                     : None
[ceph_deploy.cli][INFO  ]  cd_conf                       : <ceph_deploy.conf.cephdeploy.Conf instance at 0x746ac9a55af0>
[ceph_deploy.cli][INFO  ]  cluster                       : ceph
[ceph_deploy.cli][INFO  ]  fs_type                       : xfs
[ceph_deploy.cli][INFO  ]  block_wal                     : None
[ceph_deploy.cli][INFO  ]  default_release               : False
[ceph_deploy.cli][INFO  ]  username                      : None
[ceph_deploy.cli][INFO  ]  journal                       : None
[ceph_deploy.cli][INFO  ]  subcommand                    : create
.....
.....
[ceph-node4][WARNIN] --> ceph-volume lvm prepare successful for: /dev/nvme0n4
[ceph-node4][WARNIN] Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-15
[ceph-node4][WARNIN] Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-d6a93c16-53ee-4308-9db6-cb290d84b617/osd-block-e7b64452-7691-479e-9fb8-f9c46eb5d240 --path /var/lib/ceph/osd/ceph-15 --no-mon-config
[ceph-node4][WARNIN] Running command: /usr/bin/ln -snf /dev/ceph-d6a93c16-53ee-4308-9db6-cb290d84b617/osd-block-e7b64452-7691-479e-9fb8-f9c46eb5d240 /var/lib/ceph/osd/ceph-15/block
[ceph-node4][WARNIN] Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-15/block
[ceph-node4][WARNIN] Running command: /usr/bin/chown -R ceph:ceph /dev/dm-3
[ceph-node4][WARNIN] Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-15
[ceph-node4][WARNIN] Running command: /usr/bin/systemctl enable ceph-volume@lvm-15-e7b64452-7691-479e-9fb8-f9c46eb5d240
[ceph-node4][WARNIN]  stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-15-e7b64452-7691-479e-9fb8-f9c46eb5d240.service → /lib/systemd/system/ceph-volume@.service.
[ceph-node4][WARNIN] Running command: /usr/bin/systemctl enable --runtime ceph-osd@15
[ceph-node4][WARNIN] Running command: /usr/bin/systemctl start ceph-osd@15
[ceph-node4][WARNIN] --> ceph-volume lvm activate successful for osd ID: 15
[ceph-node4][WARNIN] --> ceph-volume lvm create successful for: /dev/nvme0n4
[ceph-node4][INFO  ] checking OSD status...
[ceph-node4][DEBUG ] find the location of an executable
[ceph-node4][INFO  ] Running command: sudo /bin/ceph --cluster=ceph osd stat --format=json
[ceph-node4][WARNIN] there is 1 OSD down
[ceph_deploy.osd][DEBUG ] Host ceph-node4 is now ready for osd use.

若类似如下的 OSD 的配置信息存在于 ceph.conf 配置文件中,管理员在删除 OSD 之后手动将其删除。
不过,对于 Luminous 之前的版本来说,管理员需要依次手动执行如下步骤删除 OSD 设备:

1. 于 CRUSH 运行图中移除设备:ceph osd crush remove {name}
2. 移除 OSD 的认证 key:ceph auth del osd.{osd-num}
3. 最后移除 OSD 设备:ceph osd rm {osd-num}
2.4.19 测试上传与下载数据

存取数据时,客户端必须首先连接到RADOS集群上的某个存储池(pool),然后根据对象名称由相关的CRUSH算法完成数据对象寻址(指定osd),所以为了测试集群数据存储功能,这里创建一个用于测试的存储池mypool,并设定PG数量为64个

[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool create mypool 32 32 #32PG和
32PGP
pool 'mypool' created
[cephadmin@ceph-deploy ceph-cluster]$ ceph pg ls-by-pool mypool | awk '{print
$1,$2,$15}' #验证 PG 与 PGP 组合
[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool ls
mypool
或者:
[cephadmin@ceph-deploy ceph-cluster]$ rados lspools
mypool

当前的 ceph 环境还没还没有部署使用块存储和文件系统使用 ceph,也没有使用对象存储的客户端,但是 ceph 的 rados 命令可以实现访问 ceph 对象存储的功能:
上传文件:

cephadmin@ceph-deploy:~/ceph-cluster$ rados put test-log ceph-deploy-ceph.log  --pool=mypool  #把 ceph-deploy-ceph.log 文件上传到 mypool 并指定对象 id 为 test-log

列出文件:

cephadmin@ceph-deploy:~/ceph-cluster$ rados ls --pool=mypool
test-log

文件详情:
ceph osd map 命令可以获取到存储池中数据对象的具体位置信息:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph osd map mypool test-log 
osdmap e175 pool 'mypool' (5) object 'test-log' -> pg 5.d95e430 (5.30) -> up ([7,3,10], p7) acting ([7,3,10], p7)

上面的命令结果说明:
1、osdmap e175 e175表示当前的OSD map版本(epoch 175)。OSD map 是维护Ceph OSD状态和分布信息的一个数据结果,每个版本都有一个唯一的epoch标识
2、pool 'mypool' mypool是对象所在的池名,(5)是池的ID。在Ceph中,每个池都有一个唯一的ID。
3、object 'test-log':上传的对象名
4、-> pg 5.d95e430 (5.30) 5.d95e430是对象所属的PG的哈希值标识。5指的是池ID,d95e430是由对象名和池ID计算出的哈希值的一部分,(5,30)表示PG的编号,5还是池ID,而30是PG的索引号
5、-> up ([7,3,10],p7)up是当前PG副本分布的状态,[7,3,10] 是当前PG的主副本和其他副本所在的osd id列表,p7 表示主OSD的ID是7
6、acting ([7,3,10], p7)acting是当前pg实际上在那些OSD上有副本,[7, 3, 10] 和 up 部分相同,表示这些 OSD 是当前实际在参与处理这个 PG 请求的 OSD,p7 再次确认了主 OSD 是 7

上面那条命令的结果可以得知,对象test-log 在池mypool中被映射到PG 5.30 (哈希值5.d95e430 ),这个PG的主副本OSD7,另外两个副本在OSD3 OSD10up和acting状态表名这些OSD都是健康的且正在参与处理这个pg的请求

也可以通过下面的命令查看,5.30,[7,3,10]p7 ,池id5,pg索引30,主osd是7,从osd是3和10

cephadmin@ceph-deploy:~/ceph-cluster$ ceph pg ls-by-pool mypool |awk '{print $1,$2,$15}'
PG OBJECTS UP
5.0 0 [10,1,4]p10
5.1 0 [4,3,9]p4
5.2 0 [6,0,10]p6
5.3 0 [0,6,15]p0
5.4 0 [10,2,12]p10
5.5 0 [0,15,6]p0
5.6 0 [2,5,14]p2
5.7 0 [14,1,9]p14
5.8 0 [14,10,2]p14
5.9 0 [14,11,6]p14
5.a 0 [2,8,4]p2
5.b 0 [13,0,5]p13
5.c 0 [1,15,6]p1
5.d 0 [12,11,5]p12
5.e 0 [13,8,0]p13
5.f 0 [5,11,2]p5
5.10 0 [12,8,6]p12
5.11 0 [14,4,9]p14
5.12 0 [8,12,3]p8
5.13 0 [15,10,3]p15
5.14 0 [3,10,4]p3
5.15 0 [5,1,8]p5
5.16 0 [5,12,1]p5
5.17 0 [3,9,15]p3
5.18 0 [4,11,13]p4
5.19 0 [1,5,8]p1
5.1a 0 [13,8,7]p13
5.1b 0 [5,0,14]p5
5.1c 0 [14,11,2]p14
5.1d 0 [15,4,10]p15
5.1e 0 [12,7,11]p12
5.1f 0 [6,14,8]p6
5.20 0 [8,4,1]p8
5.21 0 [6,2,9]p6
5.22 0 [10,15,5]p10
5.23 0 [11,3,12]p11
5.24 0 [14,1,7]p14
5.25 0 [13,8,5]p13
5.26 0 [11,15,0]p11
5.27 0 [10,7,1]p10
5.28 0 [13,8,3]p13
5.29 0 [0,7,9]p0
5.2a 0 [13,3,8]p13
5.2b 0 [4,0,13]p4
5.2c 0 [2,8,6]p2
5.2d 0 [3,9,13]p3
5.2e 0 [14,2,9]p14
5.2f 0 [11,12,4]p11
5.30 1 [7,3,10]p7
5.31 0 [13,11,6]p13
5.32 0 [3,11,4]p3
5.33 0 [2,12,9]p2
5.34 0 [5,3,12]p5
5.35 0 [7,10,13]p7
5.36 0 [1,8,14]p1
5.37 0 [4,12,10]p4
5.38 0 [7,2,11]p7
5.39 0 [7,11,14]p7
5.3a 0 [3,8,12]p3
5.3b 0 [10,3,15]p10
5.3c 0 [1,4,12]p1
5.3d 0 [5,8,1]p5
5.3e 0 [11,3,4]p11
5.3f 0 [8,12,0]p8
  

下载文件:

[cephadmin@ceph-deploy ceph-cluster]$ sudo rados get test-log --pool=mypool /opt/my.txt
[cephadmin@ceph-deploy ceph-cluster]$ ll /opt/
total 180
-rw-r--r-- 1 root root 180766 Jun 1 15:01 my.txt
验证下载文件:
[cephadmin@ceph-deploy ceph-cluster]$ head /opt/my.txt

修改文件:

[cephadmin@ceph-deploy ceph-cluster]$ sudo rados put test-log /etc/passwd --pool=mypool
[cephadmin@ceph-deploy ceph-cluster]$ sudo rados get test-log --pool=mypool /opt/2.txt
验证下载文件:
[cephadmin@ceph-deploy ceph-cluster]$ tail /opt/2.txt

删除文件:

[cephadmin@ceph-deploy ceph-cluster]$ sudo rados rm test-log --pool=mypool
[cephadmin@ceph-deploy ceph-cluster]$ rados ls --pool=mypool

2.5 扩展ceph集群实现高可用

主要是扩展ceph集群的mon节点以及mgr节点,已实现集群高可用

2.5.1 扩展ceph-mon节点

Ceph-mon 是原生具备自选举以实现高可用机制的 ceph 服务,节点数量通常是奇数。

ubuntu:
root@ceph-mon2:~# apt install ceph-mon
root@ceph-mon3:~# apt install ceph-mon
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon2
[ceph-mon2][DEBUG ] "name": "ceph-mon2",
[ceph-mon2][DEBUG ] "outside_quorum": [],
[ceph-mon2][DEBUG ] "quorum": [],
[ceph-mon2][DEBUG ] "rank": -1,
[ceph-mon2][DEBUG ] "state": "probing",
[ceph-mon2][DEBUG ] "sync_provider": []
[ceph-mon2][DEBUG ] }
[ceph-mon2][DEBUG ] ********************************************************************************
[ceph-mon2][INFO ] monitor: mon.ceph-mon2 is currently at the state of probing
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon3
[ceph-mon3][DEBUG ] "name": "ceph-mon3",
[ceph-mon3][DEBUG ] "outside_quorum": [],
[ceph-mon3][DEBUG ] "quorum": [],
[ceph-mon3][DEBUG ] "rank": -1,
[ceph-mon3][DEBUG ] "state": "probing",
[ceph-mon3][DEBUG ] "sync_provider": []
[ceph-mon3][DEBUG ] }
[ceph-mon3][DEBUG ] ********************************************************************************
[ceph-mon3][INFO ] monitor: mon.ceph-mon3 is currently at the state of probing
2.5.2 验证ceph-mon状态
[cephadmin@ceph-deploy ceph-cluster]$ ceph quorum_status
[cephadmin@ceph-deploy ceph-cluster]$ ceph quorum_status --format json-pretty

在这里插入图片描述
在这里插入图片描述

2.5.3 扩展mgr节点
安装:
~# apt install ceph-mgr
添加:
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr2
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-mgr2 #同步配置文件到 ceph-mg2 节点
2.5.4 验证mgr节点状态

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值