Ceph 学习指南 集群部署【 cephadm 】

文章目录

  • 引言
    • 初识 Server SAN
    • Server SAN 和传统存储对比
  • Ceph 概述
    • Ceph 的架构设计
    • Ceph 的特点
    • Ceph 块存储
    • Ceph 文件系统
    • Ceph 对象存储
    • Ceph 介绍
  • Ceph 集群部署
    • 配置 aliyun 源
    • 配置时间同步
    • 配置 hosts 文件
    • 安装 docker
    • 配置免密登录
    • ceph 集群部署
      • ceph1 配置
        • 安装 python3
        • 安装 cephadm
        • 创建新集群
        • 访问
        • 重置密码
        • 下载 ceph-common
        • 添加 mon 节点
        • 添加OSD节点
        • 创建 RBD
        • 创建 CEPHFS
      • 其他节点

引言

初识 Server SAN

由多个独立的服务器自带的存储组件组成一个资源池,同时融合了计算和存储资源

  • 专有设备变通用设备
  • 计算与存储线性扩展
  • 简单管理,性价比高

Server SAN 和传统存储对比

  • 从性能对比:Server SAN 服务器数量达到一定量可以超越传统存储
  • 从稳定性对比:Server SAN 通过软件来维持集群的稳定性
  • 从数据可靠性对比:Server SAN 基于副本实现高可用
  • 从扩展性对比:Server SAN 扩展性强 轻松达到 PB 级别
  • 从可管理性对比:Server SAN 通常具备 web 界面管理便捷
  • 从使用场景对比:Server SAN 适用于海量存储场景

Ceph 概述

Ceph 是一个开源项目,它提供软件定义的、统一的存储解决方案 。 Ceph 是一个可大规 模扩展、高性能并且无单点故障的分布式存储系统。 从一开始它就运行在通用商用硬件上, 具有高度可伸缩性,容量可扩展至 EB 级别,甚至更大。

Ceph 的架构设计

下图说明了基本的Ceph开发工作流程:
在这里插入图片描述

Ceph 的特点

Ceph 的架构在设计之初就包含以下特征:

  • 所有的组件必须可扩展
  • 不能存在单点故障
  • 解决方案必须是软件定义的,开源的并且可适配的
  • Ceph 软件应该运作在通用商用硬件之上

Ceph 块存储

Ceph 引入了 RBD 协议,RBD 已经被 Linux 内核支持,几乎所有的Linux 操作系统发行版都支持 RDB 。除了可靠性和性能之外, RDB 也支持其他的企业级特性,例如完整和增量式快照,精简的配置 . 写时复制( copy-on-write)式克隆,以及其他特性。 RBD 还支持全内存式缓存,这可以大大提高它的性能。

Ceph RBD 支持的最大镜像为 16EB。这些镜像可以作为磁盘映射到物理裸机、虚拟机或者其他主机使用 。业界领先的开源 hypervisor ,例如 KVM 和 Xen 完全支恃 RBD ,并利用它为自个的客户虚拟机提供 RBD 特性。 其他专有的 hypervisor (例如 VMware 和微软的 HyperV) 也支持了 RBD

Ceph 文件系统

Ceph 文件系统(也就是 CephFS) , Linux 内核驱动程序支持 CephFS ,这也使得 CcphFS 高度适用于各大 Linux 操作系统发行版 。CephFS 将数据和元数据分开存储,为上层的应用程序提供较高的性能以及可靠性。

在 Cpeh 集群内部, Ceph 文件系统库( libcephfs) 运行在 RADOS 库(librados) 之上, 后者是 Ceph 存储集群协议,由文件 、块和对象存储共用。要使用 CephFS ,你的集群节点上最少要配置一个 Ceph 元数据服务器 (MDS) 。

除此之外,客户端可以使用第三 方开源程序,例如 NFS 的 Ganesha 和 SMB/CIFS 的 Samba。

Ceph 对象存储

对象存储是一种以对象形式而不是传统文件和块形式存储的数据的方法。对象存储是一种以对象形式而不是传统文件和块形式存储的数据的方法。

通过它的对象网关(object gateway) ,也就是 RADOS 网关 (radosgw) 提供对象存储接口 。 RADOS 网关利用 librgw (RADOS 网关库)和 librados 这些库,允许应用程序跟 Ceph 对象存储建立连接。 Ceph 通过 RESTful API 提供可 访问且最稳定的多租户对象存储解决方案之一。

RADOS 网关接口满足以下特点:

  • 兼容 Swift: 这是为 OpenStack Swift API 提供的对象存储功能。
  • 兼容 S3: 这是为 Amazon S3 API 提供的对象存储功能。
  • AdminAPl: 这也称为管理 API 或者原生 API ,应用程序可以直接使用它来获取访问存储系统的权限以管理存储系统。

Ceph 介绍

Ccph 提供了各种接门让客户端庄接 Ceph 集群,这为客户端增加了灵活性。 对于数据保护,Ceph 并不依赖 RAlD 技术,因为它存在本章前面提到的各种限制。而是采用了已经被证明比 RAID 更好的副本和纠删码方案

Ceph 最大的优点是它的统一特性 ,它同时提供了现成的块、文件和对象存储解决方案

Ceph 既适合存储小文件,也适合存储大文件,而且不存在任何性能问题。

Ceph 是一个分布式存储系统;客户端可以与 Ceph 快速地交。它不采用传统的数据存储方法去维护一个绑定到某个物理位置或者文件的元数据;而是引人一个新的机制,允许客户端动态计算它们所需要的数据存储位置。这提升了客户端的性能。因为它们不再需要等待从集群的元数据服务器获取数据的位置和内容。 此外,在 Ceph 集群内部,数据的存放位置绝对是透明和自动的;客户端和管理员都不需要对数据在不同放障区域存放位置感到烦恼 Ceph 的智能系统自动管理这一切

Ceph能够检测并修正每一种故障区域中的故障,例如磁盘、节点、网络、机架、集装箱式数据中心、数据中心,甚至不同地域。Ceph 试图自动地管理故障状况,并在数据中断前尽可能修复它。其他的存储解决方案至多仅提供磁盘的可靠性或在节点故障时的可靠性。

Ceph 集群部署

Ceph 官方文档

配置 aliyun 源

备份原来的 yum 源

cd /etc/yum.repos.d/
mkdir bak
mv * bak

下载 CentOS-Base.repo

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

下载 epel 源

yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm

将 repo 配置中的地址替换为阿里云镜像站地址

sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*

配置时间同步

yum install -y chrony

备份配置文件

cp /etc/chrony.conf /etc/chrony.conf.bak

修改配置文件

sed -i '3ipool ntp.tencent.com iburst' /etc/chrony.conf
sed -i '4d' /etc/chrony.conf

重启

systemctl restart chronyd.service

查看是否同步成功

chronyc sources -v
.-- Source mode  '^' = server, '=' = peer, '#' = local clock./ .- Source state '*' = current best, '+' = combined, '-' = not combined,
| /             'x' = may be in error, '~' = too variable, '?' = unusable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 106.55.184.199                2   6   277    40   +638us[ +711us] +/-   43ms

[!Important] 看到 ^* 说明同步成功

配置 hosts 文件

cat >> /etc/hosts << EOF
192.168.142.130 ceph1
192.168.142.131 ceph2
192.168.142.132 ceph3
EOF

安装 docker

卸载老版本

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine

安装必要的一些系统工具

yum install -y yum-utils device-mapper-persistent-data lvm2

设置稳定仓库

yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker Engine - Community --此命令会安装最新版本(latest)

yum makecache
yum install -y docker-ce docker-ce-cli containerd.io

如果遇到报错

Error: Problem 1: problem with installed package podman-3.0.1-6.module_el8.4.0+781+acf4c33b.x86_64 - package podman-3.0.1-6.module_el8.4.0+781+acf4c33b.x86_64 requires runc >= 1.0.0-57, but none of the providers can be installed...none of the providers can be installed - package containerd.io-1.6.32-3.1.el8.x86_64 conflicts with runc provided by runc-1.0.0-70.rc92.module_el8.4.0+673+eabfc99d.x86_64...

这说明:CentOS 8 默认使用 Podman 作为容器工具,这可能会导致与 Docker 的冲突。

解决办法

[!Important] 卸载 Podman 和 Buildah

yum erase podman buildah -y

再次尝试下载

yum install -y docker-ce docker-ce-cli containerd.io

配置加速器

cat >> /etc/docker/daemon.json << EOF
{ "registry-mirrors": [ "https://fb273a16b77a4b0f8e84856a8043410d.mirror.swr.myhuaweicloud.com" ]
}
EOF

启动

systemctl enable docker --now

查看 docker 版本

docker -v
Docker version 26.1.3, build b72abbb

配置免密登录

[!important] 只需要一个单项的免密就可以了

[root@ceph1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EzXNWcU+L3Rg6RFztLKpWytCpiTM740W9jaSsqbIL7I root@ceph1
The key's randomart image is:
+---[RSA 3072]----+
|          oo o+*+|
|         . .+ =oo|
|        .    + = |
|         .    *.o|
|    o   S    + .o|
|     + + +  . . .|
|      = B  . . . |
|o..  o *o= .o .  |
|E+ooo.=oo.o...   |
+----[SHA256]-----+
[root@ceph1 ~]# ssh-copy-id ceph1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ceph1 (192.168.142.130)' can't be established.
ECDSA key fingerprint is SHA256:zc5sF+tspeNmn9cFdjo3vhVsoKmBCGOOuzwjer4712c.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ceph1's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'ceph1'"
and check to make sure that only the key(s) you wanted were added.[root@ceph1 ~]# ssh-copy-id ceph2
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ceph2 (192.168.142.131)' can't be established.
ECDSA key fingerprint is SHA256:Fl+OkgYRflV2F5gentG4p7xeezw3Ri/0cDXKIn0ZL/A.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ceph2's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'ceph2'"
and check to make sure that only the key(s) you wanted were added.[root@ceph1 ~]# ssh-copy-id ceph3
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host 'ceph3 (192.168.142.132)' can't be established.
ECDSA key fingerprint is SHA256:s/qYVgvndDT6jNdWCY6Gk/AECM5yZK6e7fV0E7LozlU.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ceph3's password: Number of key(s) added: 1Now try logging into the machine, with:   "ssh 'ceph3'"
and check to make sure that only the key(s) you wanted were added.

ceph 集群部署

ceph1 配置

安装 python3

查看 python3 是否安装

python3 --version

如果没有,就安装

sudo dnf install -y python3

如果在创建软连接之后还是无法查看版本,可以试着将 python3.x改成对应的版本再试试,比如 python3.6

sudo ln -s /usr/bin/python3.x /usr/bin/python3

再次查看

python3 --version
Python 3.6.8
安装 cephadm
CEPH_RELEASE=18.2.0curl --silent --remote-name --location
https://download.ceph.com/rpm-${CEPH_RELEASE}/el8/noarch/cephadmchmod +x cephadm
mv cephadm /usr/bin/
创建新集群

[!Warning] 在执行这句话的时候,在拉取镜像的时候可能会很慢,耐心等一下看能不能拉取,在执行这条命令之后会给一个初始密码,因为我没太注意,没看到密码,下面有操作如何重置密码

cephadm bootstrap --mon-ip 192.168.142.130 --cluster-network 192.168.142.0/24 --allow-fqdn-hostname
访问

打开浏览器 通过 8443 端口访问

192.168.142.130:8443

在这里插入图片描述

重置密码

先无认证登录 ceph shell

cephadm shell

[!Warning] 记住

Inferring fsid 032cf98e-9783-11ef-bed0-000c293a0cf1

写一个密码文件

echo "123456" >  dashboard_password.yml

重置密码

ceph dashboard ac-user-set-password admin -i dashboard_password.yml --force-password

结果,出现下述信息则表示密码重置成功,并且返回了一个新的加密密码

{"username": "admin", "password": "$2b$12$0Hkr5qeqiORTTd.SY64KKO6igcljzCEz5d2134kPaka1xTW1XHVIO", "roles": ["administrator"], "name": null, "email": null, "lastUpdate": 1730429877, "enabled": true, "pwdExpirationDate": null, "pwdUpdateRequired": false}

关键信息: 这是一串加密后的密码

"password": "$2b$12$0Hkr5qeqiORTTd.SY64KKO6igcljzCEz5d2134kPaka1xTW1XHVIO"

再次通过
admin
123456
登录

在这里插入图片描述

另外:

通过这种方式进入集群模式

$(which cephadm)  shell --fsid 032cf98e-9783-11ef-bed0-000c293a0cf1 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

查看集群状态

ceph -s
 cluster:id:     032cf98e-9783-11ef-bed0-000c293a0cf1health: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum ceph1 (age 3h)mgr: ceph1.kbrwjm(active, since 2h)osd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:     
下载 ceph-common

添加 ceph.repo 源

cat > /etc/yum.repos.d/ceph.repo << EOF
[Ceph]
name=Ceph $basearch
baseurl=https://download.ceph.com/rpm-pacific/el8/$basearch
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg[Ceph-noarch]
name=Ceph noarch
baseurl=https://download.ceph.com/rpm-pacific/el8/noarch
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg[Ceph-source]
name=Ceph SRPMS
baseurl=https://download.ceph.com/rpm-pacific/el8/SRPMS
enabled=1
gpgcheck=1
gpgkey=https://download.ceph.com/keys/release.gpg
EOF

再尝试

cephadm install ceph-common

如果还是不行,就只能通过下面的方式进行安装了,下面对应的依赖,大家再尝试解压的时候可能还会遇到缺包的情况,但是这些包一般情况下也都可以在 阿里 可以找到,详细地址还是看下面

[!Warning] rpm 包有依赖关系,按照步骤来

这几个 rpm 该在哪下? 阿里ceph-common rpm包下载地址

dnf install -y ../libcephfs2-18.2.0-0.el8.x86_64.rpm 
dnf install -y ../librados2-18.2.0-0.el8.x86_64.rpm
dnf install -y ../libradosstriper1-18.2.0-0.el8.x86_64.rpm
dnf install -y ../librbd1-18.2.0-0.el8.x86_64.rpm
dnf install -y ../python3-ceph-argparse-18.2.0-0.el8.x86_64.rpm
dnf install -y ../python3-ceph-common-18.2.0-0.el8.x86_64.rpm
dnf install -y --nobest ../python3-cephfs-18.2.0-0.el8.x86_64.rpm
dnf install -y ../python3-rados-18.2.0-0.el8.x86_64.rpm
dnf install -y ../python3-rbd-18.2.0-0.el8.x86_64.rpm
cephadm install ceph-common

查看版本

ceph -v
ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)
添加 mon 节点

报错

[root@ceph1 ~]# ceph orch host add ceph2 192.168.142.131
Error EINVAL: Failed to connect to ceph2 (192.168.142.131). Permission denied
Log: Opening SSH connection to 192.168.142.131, port 22
[conn=8] Connected to SSH server at 192.168.142.131, port 22
[conn=8]   Local address: 192.168.142.130, port 41576
[conn=8]   Peer address: 192.168.142.131, port 22
[conn=8] Beginning auth for user root
[conn=8] Auth failed for user root
[conn=8] Connection failure: Permission denied
[conn=8] Aborting connection

解决办法

还是密钥的问题,ssh-keygen 生成的不行

cd /etc/cephll
total 16
-rw-------. 1 root root 151 Nov  1 11:07 ceph.client.admin.keyring
-rw-r--r--. 1 root root 181 Nov  1 11:07 ceph.conf
-rw-r--r--. 1 root root 595 Oct 31 20:35 ceph.pub
-rw-r--r--. 1 root root  92 Feb 27  2024 rbdmap
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3

添加 mon 节点

ceph orch host add ceph2 192.168.142.131
ceph orch host add ceph3 192.168.142.132
ceph orch host label add ceph2 _admin
ceph orch host label add ceph3 _admin

查看集群状态

ceph orch host lsHOST   ADDR             LABELS  STATUS  
ceph1  192.168.142.130  _admin          
ceph2  192.168.142.131  _admin          
ceph3  192.168.142.132  _admin          
3 hosts in cluster

查看当前活跃的节点

ceph mon dump
epoch 3
fsid 032cf98e-9783-11ef-bed0-000c293a0cf1
last_changed 2024-11-01T08:08:50.979451+0000
created 2024-10-31T12:34:51.829314+0000
min_mon_release 18 (reef)
election_strategy: 1
0: [v2:192.168.142.130:3300/0,v1:192.168.142.130:6789/0] mon.ceph1
1: [v2:192.168.142.131:3300/0,v1:192.168.142.131:6789/0] mon.ceph2
2: [v2:192.168.142.132:3300/0,v1:192.168.142.132:6789/0] mon.ceph3

查看集群信息

ceph -scluster:id:     032cf98e-9783-11ef-bed0-000c293a0cf1health: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 2m)mgr: ceph1.kbrwjm(active, since 5h), standbys: ceph2.lwdrvf, ceph3.nnfyaposd: 0 osds: 0 up, 0 indata:pools:   0 pools, 0 pgsobjects: 0 objects, 0 Busage:   0 B used, 0 B / 0 B availpgs:     

[!Warning] mon 此时此刻有三个节点

在这里插入图片描述

如果有从节点没有显示活跃,可能是从节点的 docker 没有起来,去从节点看看 docker 是否起来了,可以看看 docker image ls 是否有镜像存在,如果没有镜像,可以在主机点上考被镜像到其他两个节点上然后在其他的节点上运行以下就行了

添加OSD节点
[root@ceph1 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  9.3G  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part ├─cl-root 253:0    0   17G  0 lvm  /└─cl-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2     259:3    0   20G  0 disk 
nvme0n3     259:4    0   20G  0 disk 

在这里插入图片描述

[!Warning] 在三个节点上都有三个硬盘

创建分区,下面的操作不方便细说,看清除步骤

[root@ceph1 ~]# gdisk /dev/nvme0n2
GPT fdisk (gdisk) version 1.0.3Partition table scan:MBR: not presentBSD: not presentAPM: not presentGPT: not presentCreating new GPT entries.Command (? for help): n
Partition number (1-128, default 1): 
First sector (34-41943006, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-41943006, default = 41943006) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'Command (? for help): wFinal checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/nvme0n2.
The operation has completed successfully.

让内核识别分区表的变更

partprobe /dev/nvme0n2
[root@ceph1 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1  9.3G  0 rom  
nvme0n1     259:0    0   20G  0 disk 
├─nvme0n1p1 259:1    0    1G  0 part /boot
└─nvme0n1p2 259:2    0   19G  0 part ├─cl-root 253:0    0   17G  0 lvm  /└─cl-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2     259:3    0   20G  0 disk 
└─nvme0n2p1 259:6    0   20G  0 part 
nvme0n3     259:4    0   20G  0 disk

创建逻辑卷

pvcreate /dev/nvme0n2p1
vgcreate osd /dev/nvme0n2p1
lvcreate -n osd00 -L 5G osd
lvcreate -n osd01 -L 5G osd
lvcreate -n osd02 -L 5G osd
[root@ceph2 ~]# lvcreate -n osd03 -L 5G osdLogical volume "osd03" created.
[root@ceph2 ~]# lvcreate -n osd04 -L 5G osdLogical volume "osd04" created.
[root@ceph2 ~]# lvcreate -n osd05 -L 5G osdLogical volume "osd05" created.
[root@ceph3 ~]# lvcreate -n osd06 -L 5G osdLogical volume "osd06" created.
[root@ceph3 ~]# lvcreate -n osd07 -L 5G osdLogical volume "osd07" created.
[root@ceph3 ~]# lvcreate -n osd08 -L 5G osdLogical volume "osd08" created.

[!Warning] 一直到这里,我们需要在三个节点上分别执行 gdisk /dev/nvme0n2 操作,下面的添加就需要主节点上执行了

ceph orch daemon add osd ceph1:/dev/osd/osd00
ceph orch daemon add osd ceph1:/dev/osd/osd01
ceph orch daemon add osd ceph1:/dev/osd/osd02ceph orch daemon add osd ceph2:/dev/osd/osd03
ceph orch daemon add osd ceph2:/dev/osd/osd04
ceph orch daemon add osd ceph2:/dev/osd/osd05ceph orch daemon add osd ceph3:/dev/osd/osd06
ceph orch daemon add osd ceph3:/dev/osd/osd07
ceph orch daemon add osd ceph3:/dev/osd/osd08

查看 osd 节点

ceph -s
[root@ceph1 ~]# ceph -scluster:id:     032cf98e-9783-11ef-bed0-000c293a0cf1health: HEALTH_OKservices:mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 43m)mgr: ceph1.kbrwjm(active, since 5h), standbys: ceph2.lwdrvf, ceph3.nnfyaposd: 9 osds: 9 up (since 6s), 9 in (since 23s)data:pools:   1 pools, 1 pgsobjects: 2 objects, 449 KiBusage:   244 MiB used, 45 GiB / 45 GiB availpgs:     1 active+clean

关键信息

osd: 9 osds: 9 up (since 6s), 9 in (since 23s)
创建 RBD
[root@ceph1 ~]# ceph osd pool create rbd 128
pool 'rbd' created
[root@ceph1 ~]# ceph osd pool ls
.mgr
rbd
[root@ceph1 ~]# ceph osd pool application enable rbd rbd
enabled application 'rbd' on pool 'rbd'
[root@ceph1 ~]# rbd pool init rbd
[root@ceph1 ~]# ceph auth get-or-create client.rbduser mon 'profile rbd' osd 'profile rbd pool=rbd' mgr 'profile rbd pool=rbd'
[client.rbduser]key = AQA0lyRn+hv0MBAAFYpPB0X0N1i3DtFhyKiXwA==

命令解释:

ceph osd pool create rbd 128 # 创建一个存储池名为 rbd , 并指定该存储池有 128 个放置组ceph osd pool ls # 查看存储池信息ceph osd pool application enable rbd rbd # 为 rbd 存储池启动了名为 rbd 的应用,在 ceph 中 rbd 是一种将 ceph 块作为存储的应用。启动 rbd 应用后,该存储池可以被使用来创建和管理 rbd 镜像rbd pool init rbd # 初始化 rbd 存储池ceph auth get-or-create client.rbduser mon 'profile rbd' osd 'profile rbd pool=rbd' mgr 'profile rbd pool=rbd' # 创建或者获取一个名为 client.rbduser 的新的 ceph 客户端实体,并且为其设置权限。这个实例被授权 mon , osd , mgr 的访问权限

在这里插入图片描述

创建 CEPHFS

要使用CephFS文件系统,需要一个或多个MDS守护程序。如果使用较新的ceph fs volume 接口创建文件系统,则会自动创建mds。 部署元数据服务器,创建一个CephFS, 名字为cephfs

ceph fs volume create k8scephfs --placement="3 ceph1 ceph2 ceph3"

查看 ceph fs volume

[root@ceph1 ~]# ceph fs volume ls
[{"name": "k8scephfs"}
]

查看 ceph 集群中所有元数据服务器 mds 的运行状态

[root@ceph1 ~]# ceph orch ps --daemon-type mds
NAME                        HOST   PORTS  STATUS         REFRESHED  AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID  
mds.k8scephfs.ceph1.mvjfro  ceph1         running (92s)    86s ago  92s    18.6M        -  18.2.4   2bc0b0f4375d  818d30f907e5  
mds.k8scephfs.ceph2.isrpsy  ceph2         running (91s)    86s ago  92s    13.9M        -  18.2.4   2bc0b0f4375d  255585a48327  
mds.k8scephfs.ceph3.ekkzco  ceph3         running (93s)    86s ago  93s    15.0M        -  18.2.4   2bc0b0f4375d  55ebc3c3a005 

查看文件系统状态信息

[root@ceph1 ~]# ceph fs status cephfsSTANDBY MDS        
k8scephfs.ceph1.mvjfro  
k8scephfs.ceph3.ekkzco  
MDS version: ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)

查看 mds 的状态信息

[root@ceph1 ~]# ceph mds stat
k8scephfs:1 {0=k8scephfs.ceph2.isrpsy=up:active} 2 up:standby

列出所有的存储池

[root@ceph1 ~]# ceph osd pool ls
.mgr
rbd
cephfs.k8scephfs.meta
cephfs.k8scephfs.data

其他节点

把该弄的环境都准备好, python3 , docker , 时间同步等,cephadm 在 其他节点上可有可无

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

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

相关文章

Linux篇(常见入门命令)

目录 一、开启终端 二、Linux命令格式 1. 什么是Linux 的命令&#xff1f; 三、Linux下的命令补全 四、切换用户 五、uname&#xff1a;查看操作系统信息 六、ls&#xff1a;查看目录下文件 1. 用法一 2. 用法二 3. 用法三 七、pwd&#xff1a;显示当前路径 八、cd&…

全面解析:网络协议及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 # 全面解析&#xff1a;网络协议及其应用 文章目录 网络协议概述定义发展历程主要优势 主要网络协议应用层协议传输层协议网络层…

02- 模块化编程-006 ADC0808数码显示对比

1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备&#xff0c;包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…

【自动化测试】APP UI 自动化(安卓)-本地环境搭建

一、软件准备及版本介绍 软件版本JAVA-SDK1.8.0_181 python 3.10.10 Android SDK Tools 下最新版本即可&#xff0c;无特殊要求 PyCharm 2023.3.5&#xff08;下最新版本即可&#xff0c;无特殊要求&#xff09; 二、安装步骤及环境变量配置 2.1 Java安装及配置 1&am…

leetcode912.排序数组的题解

题目描述&#xff1a; 题目要求在不使用任何内置函数的情况下解决问题&#xff0c;时间复杂度为 O(nlog(n))。 笔者使用了快速排序&#xff0c;但是直接使用最原始的快速排序&#xff0c;有些特殊的测试用例会超时。 1&#xff09;如果数组本身基本有序&#xff0c;则使用原始…

安装Blender并使用

前言 该系列记录了如何用Blenderpro来构建自己的场景数据集&#xff0c;从环境搭建到后期构建数据集的整个流程 本文章是第一部分&#xff0c;BlenderPrc2的安装以及环境配置 部分参考https://blog.csdn.net/weixin_49521551/article/details/121573334 官方文档https://dlr…

json-server的使用(根据json数据一键生成接口)

一.使用目的 在前端开发初期&#xff0c;后端 API 可能还未完成&#xff0c;json-server 可以快速创建模拟的 RESTful API&#xff0c;帮助前端开发者进行开发和测试。 二.安装 npm install json-server //局部安装npm i json-server -g //全局安装 三.使用教程 1.准备一…

MySQL详细安装教程

一、从MySQL官网安装 可以翻译成中文看起来就舒服多了 下载并打开安装包&#xff0c;能看到版本是8.0.36&#xff0c;双击运行或者右键选择打开&#xff0c;打开后是一个安装向导&#xff0c;这个安装向导会先帮我们安装一个 mysql-installer 的程序&#xff0c;再通过该程序安…

qt QErrorMessage详解

1、概述 QErrorMessage是Qt框架中用于显示错误消息的一个对话框类。它提供了一个简单的模态对话框&#xff0c;用于向用户显示错误或警告消息。QErrorMessage通常用于应用程序中&#xff0c;当需要向用户报告错误但不希望中断当前操作时。它提供了一个标准的错误消息界面&…

Vue3安装、创建到使用

vue安装 npm install vuenext # 全局安装 vue-cli npm install -g vue/cli #更新插件 项目中运行 vue upgrade --nextvue create 命令 vue create [options] <app-name> options 选项可以是&#xff1a; -p, --preset <presetName>&#xff1a; 忽略提示符并使用已…

Linux 下执行定时任务之 Systemd Timers

不知道 ECS 因为什么缘故&#xff0c;上面安装的 MySQL 服务老是不定期挂掉&#xff0c;本来想通过 Linux 得 Cron 配置个半小时的定时检测任务&#xff0c;结果一直没有执行&#xff0c;因此又尝试使用了 Systemd Timers 进行了重新配置&#xff0c;简要做个记录。 Systemd Ti…

计算机网络:网络层 —— IP 多播技术

文章目录 基本概念IP多播地址和多播组 IP多播的类型硬件多播将IPv4多播地址映射为多播MAC地址 基本概念 多播&#xff08;Multicast&#xff0c;也称为组播&#xff09;是一种实现“一对多”通信的技术&#xff0c;允许一台或多台主机&#xff08;多播源&#xff09;发送单一数…

OuteTTS:基于纯语言建模的开源文本到语音合成项目,支持语音克隆等多种语音合成任务

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

C语言 | Leetcode C语言题解之第540题有序数组中的单一元素

题目&#xff1a; 题解&#xff1a; int singleNonDuplicate(int* nums, int numsSize) {int low 0, high numsSize - 1;while (low < high) {int mid (high - low) / 2 low;mid - mid & 1;if (nums[mid] nums[mid 1]) {low mid 2;} else {high mid;}}return …

【学习笔记】SAP ABAP——数据类型

SAP ABAP——数据类型 SAP模块介绍数据类型内涵数据类型分类预定义数据类型数据字典数据类型用户自定义数据类型 SAP模块介绍 模块模块名称FI财务会计CO管理会计SD销售分销MM物料管理PM工厂维护HR人力资源PS项目管理BW数据仓库BC系统相关PP生产制造 数据类型内涵 ​ 数据类型…

国产服务器平台离线部署k8s和kubesphere(含离线部署新方式)

"信创&#xff1a;鲲鹏麒麟&#xff0c;ARM64架构&#xff0c;实现K8s和Kubesphere的离线部署&#xff0c;全新方式助力企业高效运维。" 本文将深入探讨如何借助鲲鹏CPU(arm64)和操作系统Kylin V10 SP2/SP3,通过KubeKey制作KubeSphere与Kubernetes的离线安装包&#…

SpringBoot在线教育系统:技术与实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

初始JavaEE篇——多线程(7):定时器、CAS

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaEE 目录 定时器的使用 定时器的原理 模拟实现定时器 CAS 介绍 CAS的应用场景 解析 AtomicInteger 类 实现自旋锁 CAS的缺陷…

【金融风控】相关业务介绍及代码详解

金融风控相关业务介绍 【了解】项目整体介绍 1.风控业务和风控报表</span> 零售金融产品 相关的指标 风控建模流程 ​ #2.特征工程 特征构造 特征筛选 ​ 3.评分卡模型构建 逻辑回归 集成学习 XGBoost LightGBM 模型评估 ​ #4.样本不均衡问题/异常点检测 【了解】今日…

Spring Bean的作用域和生命周期

在 Spring 框架中&#xff0c;Bean 是用于管理对象的核心组成部分。Spring 的 IoC 容器通过 Bean 的作用域来控制它们的生命周期。理解 Spring Bean 的作用域和生命周期对于开发灵活、高效的 Spring 应用至关重要。 Spring Bean 的五种作用域 Spring 提供了五种 Bean 作用域&a…