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

news2024/11/24 11:04:13

文章目录

  • 引言
    • 初识 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: 1

Now 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: 1

Now 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: 1

Now 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.0

curl --silent --remote-name --location
https://download.ceph.com/rpm-${CEPH_RELEASE}/el8/noarch/cephadm

chmod +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-000c293a0cf1
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph1 (age 3h)
    mgr: ceph1.kbrwjm(active, since 2h)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
下载 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/ceph

ll
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 ls

HOST   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 -s

cluster:
    id:     032cf98e-9783-11ef-bed0-000c293a0cf1
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 2m)
    mgr: ceph1.kbrwjm(active, since 5h), standbys: ceph2.lwdrvf, ceph3.nnfyap
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     

[!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.3

Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present

Creating 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): w

Final 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 osd
  Logical volume "osd03" created.
[root@ceph2 ~]# lvcreate -n osd04 -L 5G osd
  Logical volume "osd04" created.
[root@ceph2 ~]# lvcreate -n osd05 -L 5G osd
  Logical volume "osd05" created.
[root@ceph3 ~]# lvcreate -n osd06 -L 5G osd
  Logical volume "osd06" created.
[root@ceph3 ~]# lvcreate -n osd07 -L 5G osd
  Logical volume "osd07" created.
[root@ceph3 ~]# lvcreate -n osd08 -L 5G osd
  Logical 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/osd02

ceph 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/osd05

ceph 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 -s
  cluster:
    id:     032cf98e-9783-11ef-bed0-000c293a0cf1
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 43m)
    mgr: ceph1.kbrwjm(active, since 5h), standbys: ceph2.lwdrvf, ceph3.nnfyap
    osd: 9 osds: 9 up (since 6s), 9 in (since 23s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   244 MiB used, 45 GiB / 45 GiB avail
    pgs:     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 cephfs
     STANDBY 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.coloradmin.cn/o/2230621.html

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

相关文章

(JVM)在JVM中,类是如何被加载的呢?本篇文章就带你认识类加载的一套流程!

在讲类加载前&#xff0c;需要先了解一下方法区、堆和直接内存三块内存区域的运行模式 1. 方法区 JVM中的方法去是所有线程中共享的一块区域 它存储了跟类相关的信息 方法区 会在虚拟机被启动时创建。它逻辑上是堆的组成部分 它在不同的jvm厂商中存在的位置可能会不同&…

【Arduino】一分钟快速在vs code 编译开发Arduino

下载Arduino 对于一些开发者来说&#xff0c;Arduino开发较为不方便&#xff0c;不管从代码的阅读性、开发效率等等方面&#xff0c;vs code都要优于Arduino IDE开发&#xff0c;而且vs code开发可以使用插件&#xff0c;比如一些AI代码插件&#xff0c;可以加快开发速率&#…

qt QDialog详解

1、概述 QDialog是Qt框架中用于创建对话框的类&#xff0c;它继承自QWidget。QDialog提供了一个模态或非模态的对话框&#xff0c;用于与用户进行交互。模态对话框会阻塞其他窗口的输入&#xff0c;直到用户关闭该对话框&#xff1b;而非模态对话框则允许用户同时与多个窗口进…

去除windows系统桌面字体的黑影

然后点开设置&#xff0c;关闭以下的2个选项

ssm034学生请假系统+jsp(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;学生请假系统设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本学生请假系统就是在这…

如何利用8款工具辅助建立需求管理体系

本文中&#xff0c;分享了8款辅助建立需求管理体系的工具&#xff1a;1.PingCode&#xff1b;2.Worktile&#xff1b;3.Jira&#xff1b;4.Trello&#xff1b;5.ClickUp&#xff1b;6.Notion&#xff1b;7.蓝鲸智云&#xff1b;8.红橘。 在如今快速发展的商业环境中&#xff0c…

使用Flask构建RESTful API

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用Flask构建RESTful API Flask简介 环境搭建 安装Flask 项目结构 创建应用 路由定义 请求处理 获取查询参数 获取请求体 响应…

基于LLaMA Factory对LLama 3指令微调的操作学习笔记

一、环境 在vscode中用连接云服务器&#xff0c;打开文件目录。 df -h #查看盘容量 二、下载LLaMA Factory框架和数据 下载LLaMA Factory到云服务器 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . pip install -e .命令的含…

解决VMwareWorkstation17中CentOS7不能上网的问题

在CentOS 7中查看网络状态&#xff0c;执行命令&#xff1a; systemctl status network.service 示例如下&#xff1a; [rootlinux ~]# systemctl status network.service 发现网络错误&#xff0c;解决办法&#xff1a; [rootlinux ~]# chkconfig NetworkManager off [rootli…

UI设计公司—兰亭妙微—提供轨道交通行业UI设计

蓝蓝设计工作室2008年开始&#xff0c;2011年正式成立北京兰亭妙微科技有限公司&#xff0c;主创清华团队&#xff0c;专注软件和互联网ui设计开发&#xff0c;擅长企业信息化管理、监控、大数据软件UIUE咨询和设计开发服务。立足UI&#xff0c;一直在学习进步。交通行业UE UI解…

Linux初阶——线程(Part3):POSIX 信号量 CP 模型变体

一、什么是 POSIX 信号量 信号量本质就是一个统计资源数量的计数器。​​​​​​​ 1、PV 操作 pv操作就是一种让信号量变化的操作。其中 P 操作可以让信号量减 1&#xff08;如果信号量大于 0&#xff09;&#xff0c;V 操作可以让信号量加 1. 2、信号量类型——sem_t 3…

【C语言】预处理(预编译)详解(下)(C语言最终篇)

文章目录 一、#和##1.#运算符2.##运算符 二、预处理指令#undef三、条件编译1.单分支条件编译2.多分支条件编译3.判断符号是否被定义4.判断符号是否没有被定义 四、头文件的包含1.库头文件的包含2.本地头文件的包含3.嵌套包含头文件的解决方法使用条件编译指令使用预处理指令#pr…

ComfyUI和Photoshop相结合,PS内实现:文生图,图生图,高清放大,局部重绘,面部修复,设计师福音

本文主要介绍&#xff1a;ComfyUI和Photoshop相结合&#xff0c;一个平台实现&#xff1a;图像生成&#xff0c;放大&#xff0c;局部重绘&#xff0c;面部修复&#xff0c;实时绘画 简直是设计师的福音。 主要包括&#xff1a; Photoshop 的安装以及插件的安装 Creative Cl…

音视频入门基础:AAC专题(11)——AudioSpecificConfig简介

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…

Git (推送到远端仓库)

目录 一、在 gitee 上创建一个仓库 二、将项目推送到远程仓库 三、解释推送命令 一、在 gitee 上创建一个仓库 操作如下&#xff1a; 二、将项目推送到远程仓库 这里例举新的项目推送到远程仓库的例子&#xff1a; 打开仓库查看&#xff1a; 三、解释推送命令 添加远程仓库…

qt QAction详解

1、概述 QAction是Qt框架中的一个抽象类&#xff0c;用于表示用户界面中的一个动作&#xff08;action&#xff09;。这些动作可以绑定到菜单项、工具栏按钮或快捷键上&#xff0c;提供了一种灵活的方式来处理用户交互。QAction不仅包含了动作的名称、图标、提示信息等属性&am…

【FNENet】基于帧级非语言特征增强的情感分析

这篇文章语言极其晦涩难懂&#xff0c;内容和同专栏下的CENet中每一张图都百分之95相似&#xff0c;有些描述位置和内容都一模一样&#xff0c;还并且没有引用人家 abstract&#xff1a; 多模态情感分析&#xff08;Multimodal Sentiment Analysis&#xff0c; MSA&#xff09…

6. STM32之TIM实验--编码器接口()--(实验5:PWM驱动直流电机)

这篇文章是通用定时器的最后一章节&#xff0c;也就是编码器接口&#xff0c;主要是用来进行对精确测量旋转角度或速度的负载进行精确控制。 STM32 编码器模式详解-CSDN博客 STM32——编码器测速原理及STM32编码器模式_龙邱512编码器stm32历程-CSDN博客

Ambari里面添加hive组件

1.创建hive数据库 在添加hive组件之前需要做的事情&#xff0c;先在master这个虚拟机里面创建好hive 先进入虚拟机里面进入mysql 然后输入这个命令看看有没有自己创建的hive数据库 show databases;有的话会显示下面这个样子 没有的同学使用以下命令可以在MySQL中创建hive数…

stm32引脚PB3、PB4、PA15作为普通IO口用时,需要先解除调试端口复用

当项目调试的时候&#xff0c;发现PA15引脚无论配置输出高还是低或者输入&#xff0c;均只能输出3.3V的高电平。 目前STM的硬件调试有两种方法&#xff0c;JTAG和SW的方式&#xff0c;目前个人认为最好的方式就是SW&#xff0c;因为它只占用PA13和PA14两个IO。而JTAG还要多占用…