1.cephx认证和授权

1.1 CephX认证机制

Ceph使用cephx协议对客户端进行身份认证:
1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈
2. MON会返回用于身份验正的数据结构, 其包含获取Ceph服务时用到的session key。
3.session key通过客户端密钥进行加密
4.客户端使用session key向MON请求所需的服务
5.MON向客户端提供一个ticket, 用于向实际处理数据的OSD等验正客户端身份
6.MON和OSD共享同一个secret, 因此OSD会信任由MON发放的ticket
7.ticket存在有效期限
 
注意:
CephX身份验正功能仅限制Ceph的各组件之间, 它不能扩展到其它非Ceph组件;它并不解决数据传输加密的问题;

1.2 认证与授权:

        无论Ceph客户端是何类型, Ceph都会在存储池中将所有数据存储为对象
        Ceph用户需要拥有存储池访问权限才能读取和写入数据
        Ceph用户必须拥有执行权限才能使用Ceph的管理命令
相关概念:
        用户
        授权
        使能(Capabilities)
 
用户:
        用户是指个人或系统参与者( 例如应用)
        通过创建用户, 可以控制谁( 或哪个参与者) 能够访问Ceph存储集群、 以及可访问的存储池及存储池中的数据。
        Ceph支持多种类型的用户, 但可管理的用户都属于Client类型
        区分用户类型的原因在于, MON、 OSD和MDS等系统组件也使用cephx协议, 但它们非为客户端
        通过点号来分隔用户类型和用户名, 格式为TYPE.ID, 例如client.admin等
 

1.3 授权和使能

        Ceph基于“使能(caps)”来描述用户可针对MON、 OSD或MDS使用的权限范围或级别
        通用语法格式: daemon-type 'allow caps' [...]
MON使能:
        包括r、 w、 x和allow profile cap
        例如: mon 'allow rwx', 以及mon 'allow profile osd'等
OSD使能:
        包括r、 w、 x、 class-read、 class-write和profile osd
        此外, OSD 使能还允许进行存储池和名称空间设置
MDS使能:
        只需要allow, 或留空
 

1.4 各项使能的意义:

allow
        需先于守护进程的访问设置指定
        仅对MDS表示rw之意, 其它的表示字面意义
r:读取权限, 访问MON以检索CRUSH时依赖此使能
w:对象写入权限
x:调用类方法( 读取和写入) 的能力, 以及在MON上执行auth操作的能力
class-read: x能力的子集, 授予用户调用类读取方法的能力
class-write: x的子集, 授予用户调用类写入方法的能力
*: 授予用户对特定守护进程/存储池的读取、 写入和执行权限, 以及执行管理命令的能力。
 
profile osd:
        授予用户以某个OSD身份连接到其他OSD或监视器的权限
        授予OSD权限, 使OSD能够处理复制检测信号流量和状态报告
profile mds:
        授予用户以某个MDS身份连接到其他MDS或监视器的权限
profile bootstrap-osd:
        授予用户引导OSD的权限
        授权给部署工具, 使其在引导OSD时有权添加密钥
profile bootstrap-mds:
        授予用户引导元数据服务器的权限
        授权给部署工具, 使其在引导元数据服务器时有权添加密钥
 

1.5 认证和授权过程

1.要使用cephx,管理员必须先设置用户,创建账号流程如下:
1.1 client.admin用户从命令行调用 以生成用户名和密钥。
1.2 Ceph 的子系统生成用户名和密钥,与监视器(mon)一起存储副本并将用户的密钥传输回用户
1.3 客户端收到并保存密钥,这意味着客户端和mon共享一个密钥。
ceph auth get-or-create-keyauthclient.admin

2.客户端向mon节点进行身份验证过程

2.1 客户端将用户名(比如:user01)传递给mon,mon生成会话密钥(session_key)并使用与用户名(user01)关联的密钥(创建用户user01时生成的共享密钥)对其进行加密,并将加密的数据发送回客户端。
2.2 客户端收到后使用共享密钥解密出会话密钥(session_key)。(会话密钥标识当前会话的用户)
2.3 客户端使用会话密钥签名的用户向mon请求票证。
2.4 模拟生成票证,用用户的密钥对其进行加密,然后将其发送回客户端。
2.5 客户端解密票证并使用它来签署对整个集群的 OSD 和元数据服务器的请求。
3.该cephx协议验证客户端机器和 Ceph 服务器之间正在进行的通信。
在初始身份验证之后,客户端和服务器之间发送的每条消息都使用票证进行签名,监视器、OSD 和元数据服务器可以使用它们的共享秘密进行验证。
这种身份验证提供的保护是在 Ceph 客户端和 Ceph 服务器主机之间。身份验证不会扩展到 Ceph 客户端之外。如果用户从远程主机访问 Ceph 客户端,则 Ceph 身份验证不会应用于用户主机和客户端主机之间的连接
 

1.6 管理用户

用户管理功能为 Ceph 存储集群管理员提供了直接在 Ceph 存储集群中创建、更新和删除用户的能力。
当您在 Ceph 存储集群中创建或删除用户时,您可能需要将密钥分发给客户端,以便将它们添加到密钥环中。有关详细信息,请参阅密钥环管理

1.6.1 列出用户

要列出集群中的用户,请执行以下操作:
ceph auth ls
Ceph 将列出集群中的所有用户:
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth ls

请注意,TYPE.IDusers的表示法适用于osd.0用户类型osd,其 ID 为0,client.admin用户类型为 client,其 ID 为admin(即默认client.admin用户)。另请注意,每个条目都有一个条目,以及一个或多个 条目。key: <value>caps:

您可以使用with 选项将输出保存到文件中。-o {filename}ceph auth ls
 

1.6.2 查看用户

要检索特定用户、密钥和功能,请执行以下操作:
ceph auth get {TYPE.ID}
例如:
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.admin
[client.admin] key = AQBy1x1hqZ/xEBAAMTbpjTvoOUJMLZw6YHB63A== caps mds = "allow *" caps mgr = "allow *" caps mon = "allow *" caps osd = "allow *"

您还可以使用-o {filename}选项将输出保存到文件中。开发人员还可以执行以下操作:

cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.admin -o c.a.key
exported keyring for client.admin cephuser@ceph-deploy:~/ceph-cluster$ cat c.a.key
[client.admin] key = AQBy1x1hqZ/xEBAAMTbpjTvoOUJMLZw6YHB63A== caps mds = "allow *" caps mgr = "allow *" caps mon = "allow *" caps osd = "allow *"

  

还可以使用 export选项 ceph auth export {TYPE.ID}

cephuser@ceph-deploy:~/ceph-cluster$ ceph auth export client.admin
[client.admin] key = AQBy1x1hqZ/xEBAAMTbpjTvoOUJMLZw6YHB63A== caps mds = "allow *" caps mgr = "allow *" caps mon = "allow *" caps osd = "allow *"
export auth(key=AQBy1x1hqZ/xEBAAMTbpjTvoOUJMLZw6YHB63A==)

1.6.3 添加用户

添加用户会创建用户名(即TYPE.ID)、密钥以及用于创建用户的命令中包含的任何功能。
用户的密钥使用户能够通过 Ceph 存储集群进行身份验证。用户的能力授权用户在 Ceph 监视器 ( mon)、Ceph OSD ( osd) 或 Ceph 元数据服务器 ( mds)上读取、写入或执行。
 
添加用户有以下几种方式:
  • ceph auth add:此命令是添加用户的规范方式。它将创建用户、生成密钥并添加任何指定的功能。
  • ceph auth get-or-create: 这个命令通常是创建用户最方便的方式,因为它返回一个包含用户名(在括号中)和密钥的密钥文件格式。如果用户已存在,此命令仅以密钥文件格式返回用户名和密钥。您可以使用该 选项将输出保存到文件中。-o {filename}
  • ceph auth get-or-create-key: 此命令是创建用户并返回用户密钥的便捷方式(仅限)。这对于只需要密钥的客户端很有用(例如,libvirt)。如果用户已经存在,则此命令仅返回密钥。您可以使用该选项将输出保存到文件中。-o {filename}
 
创建客户端用户时,您可以创建一个没有能力的用户。一个没有能力的用户除了认证是没有用的,因为客户端无法从监视器检索集群映射。但是,如果您希望稍后使用该命令ceph auth caps推迟添加功能
 
一个典型的用户至少有 Ceph 监视器上的读取能力和 Ceph OSD 上的读写能力。此外,用户的 OSD 权限通常仅限于访问特定池。
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth add client.rbduser1 mon 'allow r' osd 'allow rw pool=rbd-test1'
added key for client.rbduser1 cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get-or-create client.rbduser2 mon 'allow r' osd 'allow rw pool=rbd-test1'
[client.rbduser2] key = AQBP2SVhoQcHDxAAfmq8XkBVAxBCIBi6RHHWkw== cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get-or-create-key client.rbduser3 mon 'allow r' osd 'allow rw pool=rbd-test1' -o client.rbduser3.key
cephuser@ceph-deploy:~/ceph-cluster$ cat !$
cat client.rbduser3.key
AQCc2SVhNaFMChAAyz+OUTGLKrN9V8dP5BaVcQ==

重要的:如果您为用户提供 OSD 功能,但您不限制对特定池的访问,则该用户将有权访问集群中的所有池!

 

1.6.4 修改用户权限

该命令允许您指定用户并更改用户的能力。设置新功能将覆盖当前功能。要查看当前功能,请运行ceph auth get USERTYPE.USERID
 
要添加功能,您还应该在使用表单时指定现有功能:
ceph auth caps USERTYPE.USERID {daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]' [{daemon} 'allow [r|w|x|*|...] [pool={pool-name}] [namespace={namespace-name}]']
 
例如:
# client.rbduser1 增加osd的x(执行)权限
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth caps client.rbduser1 mon 'allow r' osd 'allow rwx pool=rbd-test1'
updated caps for client.rbduser1 cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser1
[client.rbduser1] key = AQAp2SVh/mg7BhAAUn1znkL/X9qmMtOW3fBDIg== caps mon = "allow r" caps osd = "allow rwx pool=rbd-test1"
exported keyring for client.rbduser1 # client.rbduser2 # 增加mon的w(写)权限
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth caps client.rbduser2 mon 'allow rw' osd 'allow rwx pool=rbd-test1'
updated caps for client.rbduser2 cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser2
[client.rbduser2] key = AQBP2SVhoQcHDxAAfmq8XkBVAxBCIBi6RHHWkw== caps mon = "allow rw" caps osd = "allow rwx pool=rbd-test1"
exported keyring for client.rbduser2 # client.rbduser3 # 修改为mon,osd的*(所有)权限
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth caps client.rbduser3 mon 'allow *' osd 'allow *'
updated caps for client.rbduser3 cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser3
[client.rbduser3] key = AQCc2SVhNaFMChAAyz+OUTGLKrN9V8dP5BaVcQ== caps mon = "allow *" caps osd = "allow *"
exported keyring for client.rbduser3

  

1.6.5 删除用户

要删除用户,请使用:ceph auth del
ceph auth del {TYPE}.{ID}
哪里{TYPE}是一个client,osd,mon,或mds,并且{ID}是用户名或守护进程的ID。
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth del client.rbduser3

1.6.6 打印用户的密钥

要将用户的身份验证密钥打印到标准输出,请执行以下操作:
ceph auth print-key {TYPE}.{ID}
哪里{TYPE}是一个client,osd,mon,或mds,并且{ID}是用户名或守护进程的ID。
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth print-key client.rbduser1
AQAp2SVh/mg7BhAAUn1znkL/X9qmMtOW3fBDIg==

当您需要使用用户的密钥(例如,libvirt)填充客户端软件时,打印用户的密钥非常有用。

mount -t ceph serverhost:/ mountpoint -o name=client.user,secret=`ceph auth print-key client.user`
 

1.6.7 导入用户

要导入一个或多个用户,请使用并指定一个密钥环:ceph auth import
ceph auth import -i /path/to/keyring
 
可以用于用户和权限的备份,即便账号被删除,也可以通过import文件将用户恢复,且key不变
# 查看用户client.rbduser2的key 和权限
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser2
[client.rbduser2] key = AQBP2SVhoQcHDxAAfmq8XkBVAxBCIBi6RHHWkw== caps mon = "allow rw" caps osd = "allow rwx pool=rbd-test1" # 将用户client.rbduser2的key和权限导出到client.rbduser2.keyring文件
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser2 -o client.rbduser2.keyring # 查看导出的文件内容和get 查看的相同
cephuser@ceph-deploy:~/ceph-cluster$ cat !$ cat client.ebduser2.keyring
[client.rbduser2] key = AQBP2SVhoQcHDxAAfmq8XkBVAxBCIBi6RHHWkw== caps mon = "allow rw" caps osd = "allow rwx pool=rbd-test1" # 删除client.rbduser2用户
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth del client.rbduser2 # 通过导入备份文件恢复用户及其权限
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth import -i client.ebduser2.keyring # 验证恢复后的用户key、权限和被删除前一致。
cephuser@ceph-deploy:~/ceph-cluster$ ceph auth get client.rbduser2
[client.rbduser2] key = AQBP2SVhoQcHDxAAfmq8XkBVAxBCIBi6RHHWkw== caps mon = "allow rw" caps osd = "allow rwx pool=rbd-test1"

  

2.普通用户使用客户端使用块存储

2.1 创建给普通用户使用的pool,开启rbd功能,并创建镜像img

$ ceph osd pool create rbd-test2 16 16
pool 'rbd-test2' created $ ceph osd pool application enable rbd-test2 rbd
enabled application 'rbd' on pool 'rbd-test2' $ rbd pool init -p rbd-test2 $ rbd create img-test3 --size 5G --pool rbd-test2 --image-format 2 --image-feature layering $ rbd ls --pool rbd-test2
img-test3

  

2.2 创建普通账户并授权

$ ceph auth add client.rbd_user_01 mon 'allow r' osd 'allow rwx pool=rbd-test2'
added key for client.rbd_user_01
 

2.3 导出用户权限到 keyring 文件

$ ceph auth get client.rbd_user_01 -o ceph.client.rbd_user_01.keyring
exported keyring for client.rbd_user_01

  

2.4 客户端安装ceph-common

~# wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -
~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
~# apt install ceph-common

  

2.5 同步普通用户认证文件

$ sscp ceph.conf ceph.client.admin.keyring ceph.client.rbd_user_01.keyring root@client1:/etc/ceph/
ceph.client.rbd_user_01.keyring

  

2.6 在客户端上查看映射rbd并映射

root@client1:~# rbd ls --pool rbd-test2
img-test3 root@client1:~# rbd --image img-test3 --pool rbd-test2 info
rbd image 'img-test3':
size 5 GiB in 1280 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: d65187c1e104
block_name_prefix: rbd_data.d65187c1e104
format: 2
features: layering
op_features:
flags:
create_timestamp: Wed Aug 25 16:25:22 2021
access_timestamp: Wed Aug 25 16:25:22 2021
modify_timestamp: Wed Aug 25 16:25:22 2021 root@client1:~# rbd --user rbd_user_01 --pool rbd-test2 map img-test3
/dev/rbd0
rbd: --user is deprecated, use --id

  

2.7 格式化并挂载 rbd磁盘分区

~# mkfs.xfs /dev/rbd0
~# mount /dev/rbd0 /mnt/rbd0/
~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 5.0G 39M 5.0G 1% /mnt/rbd0

2.8 卸载并删除镜像映射

root@client1:~# umount /mnt/rbd0
root@client1:~# rbd --user rbd_user_01 --pool rbd-test2 unmap img-test3
rbd: --user is deprecated, use --id

  

2.9 删除rbd镜像

cephuser@ceph-deploy:~/ceph-cluster$ rbd rm --pool rbd-test2 --image img-test3
Removing image: 100% complete...done.

  

3.Ceph-FS 文件存储

Ceph FS 即ceph filesystem,可以实现文件系统共享功能,客户端通过ceph 协议挂载并使用ceph 集群作为数据存储服务器。
Ceph FS 需要运行Meta Data Services(MDS)服务,其守护进程为ceph-mds,ceph-mds 进程管理与cephFS 上存储的文件相关的元数据,并协调对ceph 存储集群的访问。

3.1 部署MDS 服务

3.1.1 所有mds节点安装ceph-mds

root@mds1:~# wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -
root@mds1:~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
root@mds1:~# apt install ceph-mds

3.1.2 mds所有节点创建账号普通账号并赋予sudo权限

root@mds1:~# groupadd  -r -g 2023 cephuser  && useradd -r -m  -s /bin/bash  -u 2023 -g 2023 cephuser && echo cephuser:sa@123.. | chpasswd
root@mds1:~# echo "cephuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

3.1.3 原集群节点增加mds的hosts配置

192.168.2.61 mds1
192.168.2.62 mds2
192.168.2.64 mds3
192.168.2.64 mds4

3.1.4 所有mds节点配置集群中所有节点解析的hosts

192.168.2.2  ceph-deploy
192.168.2.21 mon1
192.168.2.22 mon2
192.168.2.23 mon3
192.168.2.31 mgr1
192.168.2.32 mgr2
192.168.2.41 osd1
192.168.2.42 osd2
192.168.2.43 osd3
192.168.2.44 osd4
192.168.2.50 client1
192.168.2.61 mds1
192.168.2.62 mds2
192.168.2.64 mds3
192.168.2.64 mds4

3.1.5 管理节点配置cephuser普通用户ssh免密ssh信任

$ ssh-copy-id cephuser@mds1
$ ssh-copy-id cephuser@mds2
$ ssh-copy-id cephuser@mds3
$ ssh-copy-id cephuser@mds4

3.1.6 同步集群key

$ scp ceph.conf ceph.client.admin.keyring root@mds1:/etc/ceph/
$ scp ceph.conf ceph.client.admin.keyring root@mds2:/etc/ceph/
$ scp ceph.conf ceph.client.admin.keyring root@mds3:/etc/ceph/
$ scp ceph.conf ceph.client.admin.keyring root@mds4:/etc/ceph/

3.1.7 需要单独安装Python2

# apt install python2.7 -y
# ln -sv /usr/bin/python2.7 /usr/bin/python2

3.1.8 在管理节点部署mds服务

$ ceph-deploy mds create mds1
$ ceph-deploy mds create mds2
$ ceph-deploy mds create mds3
$ ceph-deploy mds create mds4

  

3.2 创建CephFS metadata 和data 存储池

$ ceph osd pool create cephfs-t1-metadata 32 32
pool 'cephfs-t1-metadata' created $ ceph osd pool create cephfs-t1-data 64 64
pool 'cephfs-t1-data' created

3.3 创建cephFS 并验证

$ ceph fs new cephfs-t1 cephfs-t1-metadata cephfs-t1-data
new fs with metadata pool 8 and data pool 9

3.4 查看文件系统状态

$ ceph fs status cephfs-t1
cephfs-t1 - 0 clients
=========
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active mds1 Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs-t1-metadata metadata 96.0k 629G
cephfs-t1-data data 0 629G
STANDBY MDS
mds2
mds3
mds4
MDS version: ceph version 16.2.5 (0883bdea7337b95e4b611c768c0279868462204a) pacific (stable)
$ ceph fs get cephfs-t1
Filesystem 'cephfs-t1' (1)
fs_name cephfs-t1
epoch 5
flags 12
created 2021-08-26T14:47:28.599590+0800
modified 2021-08-26T14:54:22.906615+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 0
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,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds 1
in 0
up {0=4983}
failed
damaged
stopped
data_pools [8]
metadata_pool 7
inline_data disabled
balancer
standby_count_wanted 1
[mds.mds1{0:4983} state up:active seq 3 addr [v2:192.168.2.61:6800/1159603360,v1:192.168.2.61:6801/1159603360]]

3.5 设置处于激活状态mds 的数量

cephuser@ceph-deploy:~/ceph-cluster$ ceph fs set cephfs-t1 max_mds 2

cephuser@ceph-deploy:~/ceph-cluster$ ceph fs status cephfs-t1
cephfs-t1 - 0 clients
=========
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active mds1 Reqs: 0 /s 10 13 12 0
1 active mds4 Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs-t1-metadata metadata 168k 629G
cephfs-t1-data data 0 629G
STANDBY MDS
mds2
mds3
MDS version: ceph version 16.2.5 (0883bdea7337b95e4b611c768c0279868462204a) pacific (stable)

3.6 MDS 高可用优化

目前的状态是mds1 和mds4 分别是active 状态,mds2 和mds3 分别处于standby 状态.
可以将:
mds2 设置为mds1 的standby
mds3 设置为mds4 的standby
以实现每个主都有一个固定备份角色的结构,则修改配置文件如下
$ vim ceph.conf
[global]
fsid = 54ed6318-9830-4152-917c-f1af7fa1002a
public_network = 192.168.2.0/24
cluster_network = 172.1.0.0/24
mon_initial_members = mon1, mon2, mon3
mon_host = 192.168.2.21,192.168.2.22,192.168.2.23
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx [mds.mds1]
#mds_standby_for_fscid = cephfs-t1
mds_standby_for_name = mds2
mds_standby_replay = true [mds.mds3]
mds_standby_for_name = mds4
mds_standby_replay = true

3.7 分发配置文件并重启mds服务

$ ceph-deploy --overwrite-conf config push mds1
$ ceph-deploy --overwrite-conf config push mds2
$ ceph-deploy --overwrite-conf config push mds3
$ ceph-deploy --overwrite-conf config push mds4

  

root@mds1:~# systemctl restart ceph-mds@mds1.service
root@mds2:~# systemctl restart ceph-mds@mds2.service
root@mds3:~# systemctl restart ceph-mds@mds3.service
root@mds4:~# systemctl restart ceph-mds@mds4.service

3.8 查看主备状态

$ ceph fs status
cephfs-t1 - 0 clients
=========
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active mds4 Reqs: 0 /s 10 13 12 0
1 active mds3 Reqs: 0 /s 10 13 11 0
POOL TYPE USED AVAIL
cephfs-t1-metadata metadata 168k 629G
cephfs-t1-data data 0 629G
STANDBY MDS
mds2
mds1
MDS version: ceph version 16.2.5 (0883bdea7337b95e4b611c768c0279868462204a) pacific (stable)
问题:
根据配置,预期为mds1 <--> mds2, mds3 <--> md4,重启了mds服务多长,也没达到预期的效果。
而且mds服务默认30分钟内重启次数不能超过3次,否则需要修改参数。
vim /etc/systemd/system/ceph-mds.target.wants/ceph-mds@mds1.service
StartLimitBurst=3
StartLimitInterval=30min

3.9 给客户端创建用于cephfs文件系统挂载的普通用户

# 创建账号并授权
$ ceph auth add client.cephfs_user02 mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-t1-data'
added key for client.cephfs_user02 # 创建用keyring 文件
$ ceph auth get client.cephfs_user02 -o ceph.client.cephfs_user02.keyring
exported keyring for client.cephfs_user02 $ $ ceph auth print-key client.cephfs_user02 > cephfs_user02.key

3.10 客户端安装ceph-common

~# wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -
~# echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list
~# apt install ceph-common

3.11 将生成的cephfs客户端使用的普通用户的认证文件同步到客户端节点

$ scp ceph.conf ceph.client.cephfs_user02.keyring cephfs_user02.key root@client1:/etc/ceph/
root@client1's password:
ceph.conf 100% 461 141.0KB/s 00:00
ceph.client.cephfs_user02.keyring 100% 160 59.3KB/s 00:00
cephfs_user02.key 100% 40 16.3KB/s 00:00

3.12 内核空间挂载ceph-fs

客户端挂载有两种方式,一是内核空间一是用户空间,内核空间挂载需要内核支持ceph 模块,用户空间挂载需要安装ceph-fuse

3.12.1 客户端通过key文件挂载

~# mount -t ceph mon1:6789,mon2:6789,mon3:6789:/ /mnt/ceph-fs-t1/ -o name=cephfs_user02,secretfile=/etc/ceph/cephfs_user02.key
root@client1:/etc/ceph# df -h
Filesystem Size Used Avail Use% Mounted on
...
192.168.2.21:6789,192.168.2.22:6789,192.168.2.23:6789:/ 629G 0 629G 0% /mnt/ceph-fs-t1 root@client1:/etc/ceph# cd /mnt/ceph-fs-t1/ root@client1:/mnt/ceph-fs-t1# dd if=/dev/zero of=/mnt/ceph-fs-t1/file1 bs=4MB count=200
200+0 records in
200+0 records out
800000000 bytes (800 MB, 763 MiB) copied, 0.925139 s, 865 MB/s root@client1:/mnt/ceph-fs-t1# cp /var/log/syslog .
root@client1:/mnt/ceph-fs-t1# ll
total 781427
drwxr-xr-x 1 root root 3 Aug 26 17:14 ./
drwxr-xr-x 4 root root 36 Aug 26 16:48 ../
-rw-r--r-- 1 root root 800000000 Aug 26 17:14 file1
-rw-r----- 1 root root 180463 Aug 26 17:14 syslog

3.12.2 客户端通过key挂载

root@client1:~# umount /mnt/ceph-fs-t1
root@client1:~#
root@client1:~# cat /etc/ceph/cephfs_user02.key
AQCZWidhy8IpKBAA9W1tT45tflTM4bpAuT6mcw== root@client1:~# mount -t ceph mon1:6789,mon2:6789,mon3:6789:/ /mnt/ceph-fs-t1/ -o name=cephfs_user02,secret=AQCZWidhy8IpKBAA9W1tT45tflTM4bpAuT6mcw== root@client1:~# cd /mnt/ceph-fs-t1/
root@client1:/mnt/ceph-fs-t1# rm -rf *

3.11.3 开机挂载配置

root@client1:~# vim /etc/fstab
root@client1:~# mon1:6789,mon2:6789,mon3:6789:/ /mnt/ceph-fs-t1 ceph defaults,name=cephfs_user02,secretfile=/etc/ceph/cephfs_user02.key,_netdev 0 0 root@client1:~# mount -a

  

最新文章

  1. mysql 基础篇1
  2. LoaderManager使用详解(三)---实现Loaders
  3. 11G RAC 简单命令
  4. 自动运行native2ascii 命令的Bat文件的编写
  5. C语言星号的秘密
  6. c#中实现登陆窗口(无需隐藏)
  7. sql server两种分页方法
  8. win32最简单的htmlayout图形界面demo
  9. (转)Java中使用正则表达式的一个简单例子及常用正则分享
  10. Linux中安装opencv-3.3.1
  11. Java 8 异常该进
  12. Zabbix监控平台3.2.4(一)搭建部署与概述
  13. python3 电脑说话
  14. 揭开yield关键字的神秘面纱
  15. LeetCode 852 Peak Index in a Mountain Array 解题报告
  16. cxgrid过滤使用心得
  17. Python2.7-os.path
  18. 分位函数(四分位数)概念与pandas中的quantile函数
  19. 制作系统U盘,不用做任何动作直接从U盘启动装系统(非PE的)
  20. IBatis项目中com.ibatis.common.xml.NodeletException的解决方案

热门文章

  1. Python中pymongo find 遍历数据导致timeout
  2. LDAP-初见
  3. 初始CSS01
  4. C# 如何使用代码添加控件及控件事件
  5. LeetCode:数组专题
  6. Java:并发笔记-02
  7. Google Object detection配置与使用
  8. 寻找写代码感觉(八)之SpringBoot过滤器的使用
  9. Noip模拟52 2021.9.13
  10. Noip模拟35 2021.8.10