文章目录
- 引言
-
- [初识 Server SAN](#初识 Server SAN)
- [Server SAN 和传统存储对比](#Server SAN 和传统存储对比)
- [Ceph 概述](#Ceph 概述)
-
- [Ceph 的架构设计](#Ceph 的架构设计)
- [Ceph 的特点](#Ceph 的特点)
- [Ceph 块存储](#Ceph 块存储)
- [Ceph 文件系统](#Ceph 文件系统)
- [Ceph 对象存储](#Ceph 对象存储)
- [Ceph 介绍](#Ceph 介绍)
- [Ceph 集群部署](#Ceph 集群部署)
引言
初识 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 集群部署
配置 aliyun 源
备份原来的 yum 源
BASH
cd /etc/yum.repos.d/
mkdir bak
mv * bak
下载 CentOS-Base.repo
BASH
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
下载 epel 源
BASH
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
将 repo 配置中的地址替换为阿里云镜像站地址
BASH
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*
配置时间同步
BASH
yum install -y chrony
备份配置文件
BASH
cp /etc/chrony.conf /etc/chrony.conf.bak
修改配置文件
BASH
sed -i '3ipool ntp.tencent.com iburst' /etc/chrony.conf
sed -i '4d' /etc/chrony.conf
重启
BASH
systemctl restart chronyd.service
查看是否同步成功
BASH
chronyc sources -v
BASH
.-- 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 文件
BASH
cat >> /etc/hosts << EOF
192.168.142.130 ceph1
192.168.142.131 ceph2
192.168.142.132 ceph3
EOF
安装 docker
卸载老版本
BAHS
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装必要的一些系统工具
BASH
yum install -y yum-utils device-mapper-persistent-data lvm2
设置稳定仓库
BASH
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker Engine - Community --此命令会安装最新版本(latest)
BASH
yum makecache
BASH
yum install -y docker-ce docker-ce-cli containerd.io
如果遇到报错
BASH
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
BASH
yum erase podman buildah -y
再次尝试下载
BASH
yum install -y docker-ce docker-ce-cli containerd.io
配置加速器
BASH
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": [ "https://fb273a16b77a4b0f8e84856a8043410d.mirror.swr.myhuaweicloud.com" ]
}
EOF
启动
BASH
systemctl enable docker --now
查看 docker 版本
BASH
docker -v
BASH
Docker version 26.1.3, build b72abbb
配置免密登录
[!important] 只需要一个单项的免密就可以了
BASH
[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]-----+
BASH
[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 是否安装
BASH
python3 --version
如果没有,就安装
BASH
sudo dnf install -y python3
如果在创建软连接之后还是无法查看版本,可以试着将 python3.x改成对应的版本再试试,比如 python3.6
BASH
sudo ln -s /usr/bin/python3.x /usr/bin/python3
再次查看
BASH
python3 --version
Python 3.6.8
安装 cephadm
BASH
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] 在执行这句话的时候,在拉取镜像的时候可能会很慢,耐心等一下看能不能拉取,在执行这条命令之后会给一个初始密码,因为我没太注意,没看到密码,下面有操作如何重置密码
BASH
cephadm bootstrap --mon-ip 192.168.142.130 --cluster-network 192.168.142.0/24 --allow-fqdn-hostname
访问
打开浏览器 通过 8443 端口访问
BASH
192.168.142.130:8443
重置密码
先无认证登录 ceph shell
BASH
cephadm shell
[!Warning] 记住
Inferring fsid 032cf98e-9783-11ef-bed0-000c293a0cf1
写一个密码文件
BASH
echo "123456" > dashboard_password.yml
重置密码
BASH
ceph dashboard ac-user-set-password admin -i dashboard_password.yml --force-password
结果,出现下述信息则表示密码重置成功,并且返回了一个新的加密密码
BASH
{"username": "admin", "password": "$2b$12$0Hkr5qeqiORTTd.SY64KKO6igcljzCEz5d2134kPaka1xTW1XHVIO", "roles": ["administrator"], "name": null, "email": null, "lastUpdate": 1730429877, "enabled": true, "pwdExpirationDate": null, "pwdUpdateRequired": false}
关键信息: 这是一串加密后的密码
BASH
"password": "$2b$12$0Hkr5qeqiORTTd.SY64KKO6igcljzCEz5d2134kPaka1xTW1XHVIO"
再次通过
admin
123456
登录
另外:
通过这种方式进入集群模式
BASH
$(which cephadm) shell --fsid 032cf98e-9783-11ef-bed0-000c293a0cf1 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
查看集群状态
BASH
ceph -s
BASH
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 源
BASH
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
再尝试
BASH
cephadm install ceph-common
如果还是不行,就只能通过下面的方式进行安装了,下面对应的依赖,大家再尝试解压的时候可能还会遇到缺包的情况,但是这些包一般情况下也都可以在 阿里 可以找到,详细地址还是看下面
[!Warning] rpm 包有依赖关系,按照步骤来
这几个 rpm 该在哪下? 阿里ceph-common rpm包下载地址
BASH
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
BASH
cephadm install ceph-common
查看版本
BASH
ceph -v
ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)
添加 mon 节点
报错
BASH
[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 生成的不行
BASH
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
BASH
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3
添加 mon 节点
BASH
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
查看集群状态
BASH
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
查看当前活跃的节点
BASH
ceph mon dump
BASH
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节点
BASH
[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] 在三个节点上都有三个硬盘
创建分区,下面的操作不方便细说,看清除步骤
BASH
[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
BASH
[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
创建逻辑卷
BASH
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
BASH
[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.
BASH
[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 操作,下面的添加就需要主节点上执行了
BASH
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 节点
BASH
ceph -s
BASH
[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
关键信息
BASH
osd: 9 osds: 9 up (since 6s), 9 in (since 23s)
创建 RBD
BASH
[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==
命令解释:
BASH
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
BASH
ceph fs volume create k8scephfs --placement="3 ceph1 ceph2 ceph3"
查看 ceph fs volume
[root@ceph1 ~]# ceph fs volume ls
[
{
"name": "k8scephfs"
}
]
查看 ceph 集群中所有元数据服务器 mds 的运行状态
BASH
[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
查看文件系统状态信息
BASH
[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 的状态信息
BASH
[root@ceph1 ~]# ceph mds stat
k8scephfs:1 {0=k8scephfs.ceph2.isrpsy=up:active} 2 up:standby
列出所有的存储池
BASH
[root@ceph1 ~]# ceph osd pool ls
.mgr
rbd
cephfs.k8scephfs.meta
cephfs.k8scephfs.data
其他节点
把该弄的环境都准备好, python3 , docker , 时间同步等,cephadm 在 其他节点上可有可无