Ceph-deploy搭建ceph集群

news2024/12/23 7:29:08

Ceph介绍及安装

  • 一、Ceph介绍
      • 1.1 ceph说明
      • 1.2 Ceph架构
      • 1.3 Ceph逻辑组织架构
          • 1.3.1 Pool
          • 1.3.2 PG
          • 1.3.3 PGP
  • 二、部署Ceph集群
      • 2.1 部署方式:
      • 2.2 服务器准备
          • `monitor、mgr、radosgw`:
          • `MDS`(相对配置更高一个等级)
          • `OSD节点 CPU`:
          • `OSD 节点内存`:
      • 2.3 部署环境
          • **2.3.1、四台服务器作为ceph集群osd存储服务器,每台服务器支持两个网络,`public`网络针对客户端访问,`cluster`网络用于集群管理及数据同步,每台三块或以上的磁盘**
          • **2.3.2、三台服务器作为ceph集群的`Mon`监视服务器,每台服务器可以和`ceph`集群的`cluster`网络通信**
          • **2.3.3、两个`ceph-mgr`管理服务器,可以和ceph集群的`cluster`网络通信**
          • **2.3.4、一个服务器用于部署ceph集群,即安装`ceph-deploy`,也可以和`ceph-mgr`等复用**
          • **2.3.5、创建一个普通用户。能够通过sudo执行特权命令,配置主机名解析,ceph集群部署过程中需要对个主机配置不同的主机名,另外如果是centos系统则需要关闭各服务器的防火墙和selinux**
          • **2.3.6、网络环境:**
      • 2.4 部署RADOS集群
          • 2.4.1 仓库准备
          • 2.4.2 创建ceph集群部署用户cephadmin
          • 2.4.3 配置主机名解析
          • 2.4.4 安装ceph部署工具
          • 2.4.5 初始化mon节点
          • 2.4.6 初始化ceph存储节点
            • 2.4.6.1 修改ceph镜像源
            • 2.4.6.2 初始化node节点
          • 2.4.7 安装Ceph-mon 服务
            • 2.4.7.1 安装ceph-mon
            • 2.4.7.2 ceph集群添加ceph-mon服务
          • 2.4.8 验证mon节点
          • 2.4.9 分发admin密钥
          • 2.4.10 ceph node节点验证密钥
          • 2.4.11 部署ceph-mgr节点
          • 2.4.12 验证ceph-mgr节点
          • 2.4.13 ceph-deploy管理ceph集群
          • 2.4.14 测试ceph命令
          • 2.4.15 初始化存储节点
          • 2.4.16 添加OSD
            • 2.4.16.1 数据分类保存
            • 2.4.16.2 添加osd
          • 2.4.17 验证ceph集群
          • 2.4.18 从RADOS移出OSD
          • 2.4.19 测试上传与下载数据
      • 2.5 扩展ceph集群实现高可用
          • 2.5.1 扩展ceph-mon节点
          • 2.5.2 验证ceph-mon状态
          • 2.5.3 扩展mgr节点
          • 2.5.4 验证mgr节点状态

一、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-ansible:https://github.com/ceph/ceph-ansible #python
ceph-salt:https://github.com/ceph/ceph-salt #python
ceph-container:https://github.com/ceph/ceph-container #shell
ceph-chef:https://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-deploy:https://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节点状态

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2099549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文献阅读(218)EHP

题目&#xff1a;A Research Retrospective on the AMD Exascale Computing Journey时间&#xff1a;2023会议&#xff1a;ISCA研究机构&#xff1a;AMD 题目&#xff1a;Realizing the AMD Exascale Heterogeneous Processor Vision时间&#xff1a;2024会议&#xff1a;ISCA研…

【人工智能 | 机器学习】神经网络

文章目录 1. 神经元模型2. 感知机与多层网络3. 误差逆传播算法&#xff08;BP)4. 全局最小与局部极小5. 其他常见神经网络6. 深度学习 1. 神经元模型 神经网络&#xff1a;具有适应性的 简单单元&#xff08;神经元&#xff09;组成的广泛并行互连的网络&#xff0c;其组织能够…

微服务组件----网关

小编目前大一&#xff0c;刚开始着手学习微服务的相关知识&#xff0c;小编会把它们整理成知识点发布出来。我认为同为初学者&#xff0c;我把我对知识点的理解以这种代码加观点的方式分享出来不仅加深了我的理解&#xff0c;或许在某个时候对你也有所帮助&#xff0c;同时也欢…

KTV包房开台必点套餐--SAAS本地化及未来之窗行业应用跨平台架构

一、源码 var 未来之窗app_通用ID"";CyberWin_Dialog.layer(url,{type:"url",title:title,move:false,width:"700px",height:"400px",id:未来之窗app_通用ID,mask:true,align:59,hideclose:false}); 二、解释 以下是用修仙手法为您改…

深度学习系列69:tts技术原理

tts为text-to-speech&#xff0c;asr为Automatic Speech Recognition&#xff0c;即speech-to-text。 1. 常用基础模型 下面介绍的deep voice是端到端生成语音的模型&#xff0c;后面两个是生成Mel谱&#xff0c;然后再使用vocoder生成语音的模型。 1.1 Deep voice 目前端到…

Ubuntu安装boost,protobuf、moduo

一、Ubuntu安装muduo muduo库是基于boost开发的&#xff0c;确保先安装了boost&#xff08;对boost版本有要求&#xff09;&#xff0c;还需要先安装protobuf&#xff0c;curl库 库版本boost1.70.0protobuf3.14.0curl7.74.0muduo2.0.2 1、Ubuntu安装boost # 更新资源列表 s…

【2024-2025源码+文档+调试讲解】微信小程序的城市公交查询系统

摘 要 当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#xff0c;国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统城市公交查询管理采取了人工的管理方法…

【第0005页 · 贪心】非递减数列

【前言】本文以及之后的一些题解都会陆续整理到目录中&#xff0c;若想了解全部题解整理&#xff0c;请看这里&#xff1a; 第0005页 非递减数列 今天我们来看一道 LeetCode 上“广泛好评”的一道 Easy 题&#xff01;&#xff01;&#xff01;&#xff08;蓝色是 OJ 平台&…

CentOS 7 升级 OpenSSH 9.8p1

背景 OpenSSH 官方发布安全通告&#xff0c;披露CVE-2024-6387 OpenSSH Server远程代码执行漏洞。 环境 操作系统内核openssh 版本openssl 版本7.8.20033.10.0-11277.4p11.0.2k-fips 安装编译软件和下载 OpenSSH9.8p1 软件包 mkdir -p /data/software cd /data/software/…

安卓13 鼠标右键作返回键,鼠标事件修改

总纲 android13 rom 开发总纲说明 前言 目录 1.前言2.问题分析3.代码分析4.代码修改5.编译1.前言 像有些设备是使用鼠标操作的,但是默认的android 鼠标右键并不是像电脑一样,能够做到,左键是确定,右键是返回

足球比分预测分析理论

走进一个充满欢呼声的体育场&#xff0c;空气中充满了对即将到来的两支强大足球队之间对决的期待。一个引人入胜的问题浮现出来&#xff1a;我们可以在比赛开始之前预测比赛的结果吗&#xff1f; 本文提出了一个基于概率和统计的模型&#xff0c;通过考虑每支队伍的进攻和防守能…

9.2-模型量化学习内容

量化简介 量化是将模型浮点数变为定点数运行的过程。 基本概念 &#xff1a;模型量化可以减少模型尺寸&#xff0c;进而减少在推理时的内存消耗&#xff0c;并且在一些低精度运算较快的处理器上可以增加推理速度。 常见方法&#xff1a;工业界目前最常用的量化位数是8比特&a…

期权权利金要多少?期权保证金和权利金有什么区别?

今天带你了解期权权利金要多少&#xff1f;期权保证金和权利金有什么区别&#xff1f;期权交易中&#xff0c;保证金和权利金是两个核心概念&#xff0c;它们在交易过程中扮演着不同的角色。 期权权利金一般是多少&#xff1f; 期权的买方叫权利金、期权的卖方叫保证金&#…

【Altium Designer脚本开发】——PCB平面绕组线圈 V1.4

PCB平面绕组线圈工具用于生成平面电机线圈&#xff0c;应用场景可参考平面电机的书籍、CNKI论文或平面电机的视频。此工具运行环境在Altium Designer中&#xff0c;可用于Altium Designer全系列的版本中。 以下工具可以定制和试用 原理图文档处理工具 ➡️物料编码自动查找工具…

Fluent 超音速射流噪声仿真分析

1. 摘要 本算例使用ANSYS Fluent 19.0软件&#xff0c;对超音速射流流动进行直接气动声学仿真&#xff0c;文档内包含详细的网格导入、模型选择、材料物性、边界条件、求解参数、后处理的设置。通过仿真计算获得射流流场和射流噪声。 2. 案例描述 本算例仿真的案例为以简化…

【Unity】子物体旋转变形的解决方法

如图&#xff0c;如果父物体缩放不为&#xff08;1, 1&#xff0c;1&#xff09;&#xff0c;则子物体如果有旋转量&#xff0c;则会在对应坐标轴上产生变形。 解决方案是&#xff1a; 在子物体和父物体节点间多增加一个空节点&#xff0c;保证空节点的世界坐标下的缩放为&…

livox MID-360调试(解决ip设置问题)

整体的调试思路参考大疆Livox Mid360 使用指南_mid360中的imu内参-CSDN博客这篇博客。 但是在调试过程中出现了ip地址设置不对导致的报错&#xff1a; 1.livox viewer中看不到点云数据 2.livox SDK2 bind error。 joeyjoey:~/slam/Livox-SDK2/build/samples/livox_lidar_qu…

hugging face 利用现有模型进行预测

本篇主要记录下如何使用hugging face来快速找到我们需要的模型&#xff0c;并通过已有模型来快速实现demo或是功能模块。贴上hugging face 官网链接&#xff1a; hugging face model界面(需要魔法)需要模板代码请跳转流程总结 目录 1.选择模型 2.创建模型处理器对象 3.使用…

JAVA呵护晚年从智慧开始养老护理代办陪诊陪护小程序

呵护晚年&#xff0c;从智慧开始 —— 养老护理代办陪诊陪护小程序全解析 &#x1f475; 【开篇&#xff1a;岁月静好&#xff0c;智慧护航】 随着时光的流转&#xff0c;家中的长辈渐渐步入晚年。如何给予他们最贴心的关怀与照顾&#xff0c;成为了我们心中的头等大事。今天…

【Linux】08.Linux 下的第一个小程序——进度条

一、知识引入 在写我们的进度条之前需要先引入一下小的知识点&#xff1a;换行与回车&#xff0c;认识缓冲区&#xff0c;认识格式化输出 1.1 换行与回车 换行指的是跳转到下一行的同一个位置 回车指的是跳转到本行开头的位置 新起一行就是换行回车 但是日常生活中我们见到的…