ceph存储池创建,删除,PG和PGP基本分配方法;ceph 的用户管理及授权;普通用户挂载块存储和cephfs;MDS高可用架构

一.熟练管理存储池(创建存储池、删除存储池)、掌握 pg 与 pgp 的基本分配方法

RBD(RADOS Block DEVICES)块存储设备,客户端基于librbd库将RADOS存储集群作为块设备,不过,用于rbd的存储池需要事先启动RBD功能并进行初始化。
$ceph osd pool create myrbd1 64 64 #创建存储池,指定pg和pgp的数量,pgp要对存在于pg的数据进行组合存储,pgp通常等于pg的值

#创建存储池
cephadmin@ceph-deploy:~$ ceph osd pool create  myrbd1 64 64
pool 'myrbd1' created
#对存储池启用rbd功能
cephadmin@ceph-deploy:~$ ceph osd pool application enable myrbd1 rbd
enabled application 'rbd' on pool 'myrbd1'
#使用rbd命令对存储池初始化
cephadmin@ceph-deploy:~$ rbd pool init -p myrbd1
#创建myrbd1映像
cephadmin@ceph-deploy:~$ rbd create myimg1 --size 5G --pool myrbd1
cephadmin@ceph-deploy:~$ rbd create myimg2 --size 3G --pool myrbd1 --image-format 2 --image-feature layering
#列出指定pool中的img
cephadmin@ceph-deploy:~$ rbd ls --pool myrbd1
myimg1
myimg2
#查看指定的img的信息
cephadmin@ceph-deploy:~$ rbd --image myimg1 --pool myrbd1 info
rbd image 'myimg1':
	size 5 GiB in 1280 objects
	order 22 (4 MiB objects)
	snapshot_count: 0
	id: 5ef6b2eba38b
	block_name_prefix: rbd_data.5ef6b2eba38b
	format: 2
	features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
	op_features: 
	flags: 
	create_timestamp: Sat Dec 31 21:47:32 2022
	access_timestamp: Sat Dec 31 21:47:32 2022
	modify_timestamp: Sat Dec 31 21:47:32 2022
cephadmin@ceph-deploy:~$ rbd --image myimg2 --pool myrbd1 info
rbd image 'myimg2':
	size 3 GiB in 768 objects
	order 22 (4 MiB objects)
	snapshot_count: 0
	id: 5efbb2203242
	block_name_prefix: rbd_data.5efbb2203242
	format: 2
	features: layering
	op_features: 
	flags: 
	create_timestamp: Sat Dec 31 21:49:34 2022
	access_timestamp: Sat Dec 31 21:49:34 2022
	modify_timestamp: Sat Dec 31 21:49:34 2022
#查看ceph当前状态
cephadmin@ceph-deploy:~$ ceph df
--- RAW STORAGE ---
CLASS    SIZE   AVAIL     USED  RAW USED  %RAW USED
hdd    60 TiB  60 TiB  116 MiB   116 MiB          0
TOTAL  60 TiB  60 TiB  116 MiB   116 MiB          0
--- POOLS ---
POOL                   ID  PGS  STORED  OBJECTS    USED  %USED  MAX AVAIL
device_health_metrics   1    1     0 B        0     0 B      0     19 TiB
myrbd1                  2   64   405 B        7  48 KiB      0     19 TiB

#部署 署 radosgw 服 务,将 ceph-mgr1 服务器部署为 RGW 主机
root@ceph-mgr1:~# apt install radosgw=16.2.5-1bionic
[cephadmin@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf rgw create ceph-mgr1
#: 验证 证 radosgw 服 务
[root@ceph-mgr1 ~]# ps -aux | grep radosgw
ceph 2528 1.5 2.7 5055512 52048 ? Ssl 16:49 0:00
/usr/bin/radosgw -f --cluster ceph --name client.rgw.ceph-mgr1 --setuser ceph --setgroup ceph
#部署MDS服务:
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mgr1
#验证MDS服务:
cephadmin@ceph-deploy:~/ceph-cluster$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active}
#创建cephFS metadata和data存储池
[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-metadata 32 32
pool ‘cephfs-metadata’ created #保存 metadata 的 pool
[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-data 64 64
pool ‘cephfs-data’ created #保存数据的 pool
#创建cephFS并验证
[cephadmin@ceph-deploy ceph-cluster]$ ceph fs new mycephfs cephfs-metadata cephfs-data
[cephadmin@ceph-deploy ceph-cluster]$ ceph fs status mycephfs #查看指定 cephFS 状态
#验证cephFS服务状态
[cephadmin@ceph-deploy ceph-cluster]$ ceph mds stat
mycephfs-1/1/1 up {0=ceph-mgr1=up:active}

#PG 与 与 PGP
PG = Placement Group #归置组,默认每个 PG 三个 OSD(数据三个副本)
PGP = Placement Group for Placement purpose #归置组的组合,pgp 相当于是 pg 对应osd 的一种逻辑排列组合关系(在不同的 PG 内使用不同组合关系的 OSD)。
加入 PG=32,PGP=32,那么:
数据最多被拆分为 32 份(PG),写入到有 32 种组合关系(PGP)的 OSD 上。
归置组(placement group)是用于跨越多 OSD 将数据存储在每个存储池中的内部数据结构。
归置组在 OSD 守护进程和 ceph 客户端之间生成了一个中间层,CRUSH 算法负责将每个对象动态映射到一个归置组,然后再将每个归置组动态映射到一个或多个 OSD 守护进程,从而能够支持在新的 OSD 设备上线时进行数据重新平衡。
相对于存储池来说,PG 是一个虚拟组件,它是对象映射到存储池时使用的虚拟层。可以自定义存储池中的归置组数量。
ceph 出于规模伸缩及性能方面的考虑,ceph 将存储池细分为多个归置组,把每个单独的对象映射到归置组,并为归置组分配一个主 OSD。
存储池由一系列的归置组组成,而 CRUSH 算法则根据集群运行图和集群状态,将个 PG 均匀、伪随机(基于 hash 映射,每次的计算结果够一样)的分布到集群中的 OSD 之上。如果某个 OSD 失败或需要对集群进行重新平衡,ceph 则移动或复制整个归置组而不需要单独对每个镜像进行寻址。
#PG 与 与 OSD 的 关 系
ceph 基于 crush 算法将归置组 PG 分配至 OSD
当一个客户端存储对象的时候,CRUSH 算法映射每一个对象至归置组(PG)
ceph存储池创建,删除,PG和PGP基本分配方法;ceph 的用户管理及授权;普通用户挂载块存储和cephfs;MDS高可用架构_第1张图片
#PG 分 配 计 算
归置组(PG)的数量是由管理员在创建存储池的时候指定的,然后由 CRUSH 负责创建和使用,PG 的数量是 2 的 N 次方的倍数,每个 OSD 的 PG 不要超出 250 个 PG
Total PGs = (Total_number_of_OSD * 100) / max_replication_count
单个 pool 的 PG 计算如下:
有 100 个 osd,3 副本,5 个 pool
Total PGs =100*100/3=3333
每个 pool 的 PG=3333/5=512,那么创建 pool 的时候就指定 pg 为 512
客户端在读写对象时,需要提供的是对象标识和存储池名称
客户端需要在存储池中读写对象时,需要客户端将对象名称,对象名称的hash码,存储池中的PG数量和存储池名称作为输入信息提供给ceph,然后由CRUSH计算出PG的ID以及PG针对的主OSD即可读写OSD中的对象。
具体写操作如下:
1.APP向ceph客户端发送对某个对象的请求,此请求包含对象和存储池,然后ceph客户端对访问的对象做hash计算,并根据此hash值计算出对象所在的PG,完成对象从Pool至PG的映射。
APP 访问 pool ID 和 object ID (比如 pool = pool1 and object-id = “name1”)
ceph client 对 objectID 做哈希
ceph client 对该 hash 值取 PG 总数的模,得到 PG 编号(比如 32)
ceph client 对 pool ID 取 hash(比如 “pool1” = 3)
ceph client 将 pool ID 和 PG ID 组合在一起(比如 3.23)得到 PG 的完整 ID。
2.然后客户端据 PG、CRUSH 运行图和归置组(placement rules)作为输入参数并再次进行计
算,并计算出对象所在的 PG 内的主 OSD ,从而完成对象从 PG 到 OSD 的映射。
3.客户端开始对主 OSD 进行读写请求(副本池 IO),如果发生了写操作,会有 ceph 服务端完
成对象从主 OSD 到备份 OSD 的同步

二.熟练 ceph 的用户管理及授权

客户端使用 session key 向 mon 请求所需要的服务,mon 向客户端提供一个 tiket,用于向实际处理数据的 OSD 等服务验证客户端身份,MON 和 OSD 共享同一个 secret.
ceph 用户需要拥有存储池访问权限,才能读取和写入数据
ceph 用户必须拥有执行权限才能使用 ceph 的管理命令
ceph 支持多种类型的用户,但可管理的用户都属于 client 类型
通过点号来分割用户类型和用户名,格式为 TYPE.ID,例如 client.admin。

root@ceph-deploy:~# cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
	key = AQBnFaNj1iyBMBAAd+9hKWXaNw3GYxT9PEXvrQ==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"

#列 出 指 定 用 户 信 息

root@ceph-deploy:~# ceph auth get osd.10
[osd.10]
	key = AQB+I6Njk4KWNBAAL09FFayLKF44IgUQ1fjKYQ==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.10

#: 列 出 用 户

cephadmin@ceph-deploy:~$ ceph auth list
mds.ceph-mgr1
	key: AQAdRbFjOwBXIRAAUTdwElBzYPHW+4uFicFC7Q==
	caps: [mds] allow
	caps: [mon] allow profile mds
	caps: [osd] allow rwx
osd.0
	key: AQC0IqNjbcgKIxAA+BCNpQeZiMujR+r+69Miig==
	caps: [mgr] allow profile osd
	caps: [mon] allow profile osd
	caps: [osd] allow *

#可以结合使用-o 文件名选项和 ceph auth list 将输出保存到某个文件。
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth list -o 123.key

#ceph auth add
此命令是添加用户的规范方法。它会创建用户、生成密钥,并添加所有指定的能力
添加认证 key:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth add client.tom mon 'allow r' osd 'allow rwx pool=testpool2'
added key for client.tom

##验证 key

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.tom
[client.tom]
	key = AQD2vbJj8fIiDBAArtJBzQiuPy8nDWPSFVs0bw==
	caps mon = "allow r"
	caps osd = "allow rwx pool=testpool2"
exported keyring for client.tom

##创建用户

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get-or-create client.jack mon 'allow r' osd 'allow rwx pool=testpool2'
[client.jack]
	key = AQC/vrJj5kenHhAAGeRJpY64feS4Dn6DD/R8VA==

##再次创建用户

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get-or-create client.jack mon 'allow r' osd 'allow rwx pool=testpool2'
[client.jack]
	key = AQC/vrJj5kenHhAAGeRJpY64feS4Dn6DD/R8VA==

#ceph auth get-or-create-key:
此命令是创建用户并返回用户密钥,对于只需要密钥的客户端(例如 libvrirt),此命令非常有用。

[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get-or-create-key client.jack
mon 'allow r' osd 'allow rwx pool=mypool'
AQAtr8dfi37XMhAADbHWEZ0shY1QZ5A8eBpeoQ==

用户有 key 就显示没有就创建

#修 改 用 户 能 力

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.jack
[client.jack]
	key = AQC/vrJj5kenHhAAGeRJpY64feS4Dn6DD/R8VA==
	caps mon = "allow r"
	caps osd = "allow rwx pool=testpool2"
exported keyring for client.jack
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth caps client.jack mon 'allow r' osd 'allow rw pool=testpool2'
updated caps for client.jack
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.jack
[client.jack]
	key = AQC/vrJj5kenHhAAGeRJpY64feS4Dn6DD/R8VA==
	caps mon = "allow r"
	caps osd = "allow rw pool=testpool2"
exported keyring for client.jack
#删 除 用 户 
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth del client.tom
updated
#导出 keyring 至指定文件
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get client.user1 -o
ceph.client.user1.keyring
exported keyring for client.user1
#验证指定用户的 keyring 文件:
[cephadmin@ceph-deploy ceph-cluster]$ cat ceph.client.user1.keyring
[client.user1]
key = AQAUUchfjpMqGRAARV6h0ofdDEneuaRnxuHjoQ==
caps mon = "allow r"
caps osd = "allow * pool=mypool"
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth del client.user1 #演示误删除用户
Updated
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get client.user1 #确认用户被删除
Error ENOENT: failed to find client.user1 in keyring
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth import -i
ceph.client.user1.keyring #导入用户
imported keyring
[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get client.user1 #验证已恢复用户
exported keyring for client.user1
#将多 用 户 导 出 至 秘 钥 环 :
#创建 keyring 文件:
$ ceph-authtool --create-keyring ceph.client.user.keyring #创建空的 keyring 文件
creating ceph.client.user.keyring
#把指定的 admin 用户的 keyring 文件内容导入到 user 用户的 keyring 文件:
$ceph-authtool ./ceph.client.user.keyring
--import-keyring ./ceph.client.admin.keyring
importing contents of ./ceph.client.admin.keyring into ./ceph.client.user.keyring
#验证 keyring 文件:
[cephadmin@ceph-deploy ceph-cluster]$ ceph-authtool -l ./ceph.client.user.keyring
[client.admin]
key = AQAGDKJfQk/dAxAA3Y+9xoE/p8in6QjoHeXmeg==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
#再导入一个其他用户的 keyring:
[cephadmin@ceph-deploy ceph-cluster]$ ceph-authtool ./ceph.client.user.keyring
--import-keyring ./ceph.client.user1.keyring
importing contents of ./ceph.client.user1.keyring into ./ceph.client.user.keyring
#再次验证 keyring 文件是否包含多个用户的认证信息:
[cephadmin@ceph-deploy ceph-cluster]$ ceph-authtool -l ./ceph.client.user.keyring
[client.admin]
key = AQAGDKJfQk/dAxAA3Y+9xoE/p8in6QjoHeXmeg==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
[client.user1]
key = AQAUUchfjpMqGRAARV6h0ofdDEneuaRnxuHjoQ==
caps mon = "allow r"
caps osd = "allow * pool=mypool"

三. 使用普通客户挂载块存储

#创建存储池:

cephadmin@ceph-deploy:~/ceph-cluster$ceph osd pool create rbd-data1 32 32

#存储池启用 rbd

cephadmin@ceph-deploy:~/ceph-cluster$ceph osd pool application enable rbd-data1 rbd

#初始化 rbd

cephadmin@ceph-deploy:~/ceph-cluster$rbd pool init -p rbd-data1

#创建两个镜像:

cephadmin@ceph-deploy:~/ceph-cluster$rbd create data-img1 --size 3G --pool rbd-data1 --image-format 2 --image-feature layering
cephadmin@ceph-deploy:~/ceph-cluster$rbd create data-img2 --size 5G --pool rbd-data1 --image-format 2 --image-feature layering

#列出镜像信息

cephadmin@ceph-deploy:~/ceph-cluster$rbd ls --pool rbd-data1

#以 json 格 式 显 示 镜 像 信 息

cephadmin@ceph-deploy:~/ceph-cluster$rbd ls --pool rbd-data1 -l --format json --pretty-format

#创建普通账户

ceph auth add client.shijie mon 'allow r' osd 'allow rwx pool=rbd-data1'

#验证用户信息
ceph auth get client.shijie
#创建用 keyring 文件

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-authtool --create-keyring ceph.client.shijie.keyring

#导出用户 keyring

cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.shijie -o ceph.client.shijie.keyring 

#验证指定用户的 keyring 文件

cephadmin@ceph-deploy:~/ceph-cluster$cat ceph.client.shijie.keyring 

#同 步 普 通 用 户 认 证 文 件

cephadmin@ceph-deploy:~/ceph-cluster$ scp ceph.client.shijie.keyring [email protected]:/etc/ceph/

#管理端验证镜像状态

cephadmin@ceph-deploy:~/ceph-cluster$rbd ls -p rbd-data1 -l

#在client上操作
#映射 rbd

root@ceph-node4:/# rbd -p rbd-data1 map data-img1
/dev/rbd0
root@ceph-node4:/# lsblk
rbd0
root@ceph-node4:/# mkfs.xfs /dev/rbd0
root@ceph-node4:/# mount /dev/rbd0 /data
root@ceph-node4:/# docker run -it -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD="12345678" -v /data:/var/lib/mysql mysql:5.6.46
48374db8541a7fa375c00611373051ef21690e89adfd4c156b3f6ffb0dbe95a2
root@ceph-node4:/data# ls
ibdata1  ib_logfile0  ib_logfile1  mysql  performance_schema  test

#在client上操作
#使用普通用户映射 rbd

root@ceph-node4:/etc/ceph# rbd --user shijie -p rbd-data1 map data-img2
/dev/rbd1
#格式化
root@ceph-node4:/etc/ceph#mkfs.ext4 /dev/rbd0
root@ceph-node4:/etc/ceph# mkdir /data1
root@ceph-node4:/etc/ceph# mount /dev/rbd1 /data1
root@ceph-node4:/etc/ceph# cp /var/log/auth.log /data1
root@ceph-node4:/etc/ceph# cd /data1
root@ceph-node4:/data1# ls
auth.log  lost+found

四. 使用普通用户挂载 cephfs(可以通过 secret 或者 secretfile 的形式多主机同时挂载)

Ceph FS 需要运行 Meta Data Services(MDS)服务,其守护进程为 ceph-mds,ceph-mds进程管理与 cephFS 上存储的文件相关的元数据,并协调对 ceph 存储集群的访问。
ceph存储池创建,删除,PG和PGP基本分配方法;ceph 的用户管理及授权;普通用户挂载块存储和cephfs;MDS高可用架构_第2张图片
#部署MDS服务:

cephadmin@ceph-deploy:~/ceph-cluster$ apt-cache madison ceph-mds
  ceph-mds | 16.2.10-1bionic | https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic/main amd64 Packages
cephadmin@ceph-deploy:~/ceph-cluster$ apt install ceph-mds=16.2.10-1bionic

#创建CephFS meta data和data存储池

[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-metadata 32 32
pool 'cephfs-metadata' created #保存 metadata 的 pool
[cephadmin@ceph-deploy ceph-cluster]$ ceph osd pool create cephfs-data 64 64
pool 'cephfs-data' created #保存数据的 pool
[cephadmin@ceph-deploy ceph-cluster]$ ceph fs new mycephfs cephfs-metadata
cephfs-data
new fs with metadata pool 7 and data pool 8
cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs ls
name: mycephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data ]

#查看指定 cephFS 状态

cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs status mycephfs
mycephfs - 0 clients
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS  
 0    active  ceph-mgr1  Reqs:    0 /s    10     13     12      0   
      POOL         TYPE     USED  AVAIL  
cephfs-metadata  metadata   146k  18.9T  
  cephfs-data      data       0   18.9T  
MDS version: ceph version 16.2.10 (45fa1a083152e41a408d15505f594ec5f1b4fe17) pacific (stable)

#验证cephFS服务状态

cephadmin@ceph-deploy:~$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active}

#创建客户端账户

cephadmin@ceph-deploy:~/ceph-cluster$ceph auth add client.yanyan mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-data'

#验证账户

[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get client.yanyan
exported keyring for client.yanyan
[client.yanyan]
key = AQCxpdhfjQt1OxAAGe0mqTMveNu2ZMEem3tb0g==
caps mds = "allow rw"
caps mon = "allow r"
caps osd = "allow rwx pool=cephfs-data"

#创建keyring 文件

[cephadmin@ceph-deploy ceph-cluster]$ ceph auth get client.yanyan -o
ceph.client.yanyan.keyring
exported keyring for client.yanyan

#创建 key 文件:

[cephadmin@ceph-deploy ceph-cluster]$ ceph auth print-key client.yanyan > yanyan.key

#验证用户的 keyring 文件

[cephadmin@ceph-deploy ceph-cluster]$ cat ceph.client.yanyan.keyring
[client.yanyan]
key = AQCxpdhfjQt1OxAAGe0mqTMveNu2ZMEem3tb0g==
caps mds = "allow rw"
caps mon = "allow r"
caps osd = "allow rwx pool=cephfs-data"

#同步客户端认证文件 :

[cephadmin@ceph-deploy ceph-cluster]$ scp ceph.conf ceph.client.yanyan.keyring
yanyan.key [email protected]:/etc/ceph/

#客户端验证权限

root@ceph-node4:~# ceph --user yanyan -s
  cluster:
    id:     7c088d6f-06b0-4584-b23f-c0f150af51d4
    health: HEALTH_OK
  services:
    mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 24m)
    mgr: ceph-mgr1(active, since 65m)
    mds: 1/1 daemons up
    osd: 16 osds: 16 up (since 24m), 16 in (since 13d)
    rgw: 1 daemon active (1 hosts, 1 zones)
  data:
    volumes: 1/1 healthy
    pools:   10 pools, 329 pgs
    objects: 296 objects, 218 MiB
    usage:   948 MiB used, 60 TiB / 60 TiB avail
    pgs:     329 active+clean

#客户端通过 key 文件挂载:

 root@ceph-node4:~#mkdir /data
 root@ceph-node4:/etc/ceph# mount -t ceph 172.31.6.101:6789,172.31.6.102:6789,172.31.6.103:6789:/ /data -o name=yanyan,secretfile=/etc/ceph/yanyan.key
root@ceph-node4:/etc/ceph# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
udev                                                     955M     0  955M   0% /dev
172.31.6.101:6789,172.31.6.102:6789,172.31.6.103:6789:/   19T     0   19T   0% /data

#客户端通过key挂载

root@ceph-node3:~# mkdir /data
root@ceph-node3:~# mount -t ceph 172.31.6.101:6789,172.31.6.102:6789,172.31.6.103:6789:/ /data -o name=yanyan,secret=AQAfebVjaIPgABAAzkW4ChX2Qm2Sha/5twdxPA==
root@ceph-node3:~# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
udev                                                     955M     0  955M   0% /dev
172.31.6.101:6789,172.31.6.102:6789,172.31.6.103:6789:/   19T     0   19T   0% /data
root@ceph-node3:~# cp /var/log/auth.log /data
root@ceph-node3:~# cd /data
root@ceph-node3:/data# ls
auth.log
root@ceph-node3:/data# vim auth.log 
root@ceph-node3:/data# echo "12345678" >> auth.log 
root@ceph-node3:/data# echo "testlog" >> auth.log

#在node4客户端上查看cephfs挂载点/data 目录下内容,已经同步

root@ceph-node4:/# tail -f /data/auth.log 
Jan  4 22:25:01 ceph-node3 CRON[4365]: pam_unix(cron:session): session closed for user root
12345678
testlog

#客户端内核加载 ceph.ko 模块挂载 cephfs 文件系统

root@ceph-node4:/# lsmod|grep ceph
ceph                  380928  1
libceph               315392  1 ceph
fscache                65536  1 ceph
libcrc32c              16384  5 nf_conntrack,nf_nat,xfs,raid456,libceph
root@ceph-node4:/# modinfo ceph
filename:       /lib/modules/4.15.0-130-generic/kernel/fs/ceph/ceph.ko
license:        GPL
description:    Ceph filesystem for Linux
author:         Patience Warnick <[email protected]>
author:         Yehuda Sadeh <[email protected]>
author:         Sage Weil <[email protected]>
alias:          fs-ceph
srcversion:     CB79D9E4790452C6A392A1C
depends:        libceph,fscache
retpoline:      Y
intree:         Y
name:           ceph
vermagic:       4.15.0-130-generic SMP mod_unload 
signat:         PKCS#7
signer:         
sig_key:        
sig_hashalgo:   md4

五.实现 MDS 服务的多主一备高可用架构

ceph存储池创建,删除,PG和PGP基本分配方法;ceph 的用户管理及授权;普通用户挂载块存储和cephfs;MDS高可用架构_第3张图片
#当前mds服务器状态

cephadmin@ceph-deploy:~$ ceph mds stat
mycephfs:1 {0=ceph-mgr1=up:active}

#添加MDS服务器
将 ceph-mgr2 和 ceph-mon2 和 ceph-mon3 作为 mds 服务角色添加至 ceph 集群,最后实两主两备的 mds 高可用和高性能结构。
#mds 服务器安装 ceph-mds 服务

[root@ceph-mgr2 ~]# apt install ceph-mds -y
[root@ceph-mon2 ~]# apt install ceph-mds -y
[root@ceph-mon3 ~]# apt install ceph-mds -y

#添加 mds 服务器

cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mgr2
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mon2
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-deploy mds create ceph-mon3

#验证 mds 服务器当前状态:

[cephadmin@ceph-deploy ceph-cluster]$ ceph mds stat
mycephfs-1/1/1 up {0=ceph-mgr1=up:active}, 3 up:standby

#验证 ceph集群当前状态
当前处于激活状态的 mds 服务器有一台,处于备份状态的 mds 服务器有三台。

cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs status
mycephfs - 0 clients
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS  
 0    active  ceph-mgr1  Reqs:    0 /s    16     14     12      0   
      POOL         TYPE     USED  AVAIL  
cephfs-metadata  metadata   282k  18.9T  
  cephfs-data      data     564k  18.9T  
STANDBY MDS  

#当前的文件系统状态:

cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs get mycephfs
Filesystem 'mycephfs' (1)
fs_name	mycephfs
epoch	28
flags	12
created	2023-01-01T19:09:29.258956+0800
modified	2023-01-05T14:58:00.369468+0800
tableserver	0
root	0
session_timeout	60
session_autoclose	300
max_file_size	1099511627776
required_client_features	{}
last_failure	0
last_failure_osd_epoch	406
compat	compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,7=mds uses inline data,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds	1
in	0
up	{0=144106}
failed	
damaged	
stopped	
data_pools	[8]
metadata_pool	7
inline_data	disabled
balancer	
standby_count_wanted	1
[mds.ceph-mgr1{0:144106} state up:active seq 27 addr [v2:172.31.6.104:6800/428364709,v1:172.31.6.104:6801/428364709] compat {c=[1],r=[1],i=[7ff]}]

#设置处于激活状态mds的数量
目前有四个 mds 服务器,但是有一个主三个备,可以优化一下部署架构,设置为为两主两备。

cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs set mycephfs max_mds 2
cephadmin@ceph-deploy:~/ceph-cluster$ ceph fs status
mycephfs - 0 clients
RANK  STATE      MDS        ACTIVITY     DNS    INOS   DIRS   CAPS  
 0    active  ceph-mgr1  Reqs:    0 /s    16     14     12      0   
 1    active  ceph-mon2  Reqs:    0 /s    10     13     11      0   
      POOL         TYPE     USED  AVAIL  
cephfs-metadata  metadata   354k  18.9T  
  cephfs-data      data     564k  18.9T  
STANDBY MDS  
 ceph-mgr2   
 ceph-mon3   
MDS version: ceph version 16.2.10 (45fa1a083152e41a408d15505f594ec5f1b4fe17) pacific (stable)

你可能感兴趣的:(ceph,ceph,架构)