前言:ceph-mds文件系统操作,常规操作汇总,看这一篇就够了
一、文件系统简介
Ceph 文件系统 (CephFS) 是兼容 POSIX 标准的文件系统,在 Ceph 的分布式对象存储基础上构建,称为 RADOS(可靠的自主分布式对象存储)
Ceph 文件系统提供 Ceph 元数据服务器 (MDS) 的集群。一个处于活动状态,另一些处于待机模式。
Ceph 文件系统组件
Ceph 文件系统有两个主要组件:
1、客户端
CephFS 客户端代表使用 CephFS 的应用执行 I/O 操作,如用于 FUSE 客户端的 ceph-fuse,kcephfs 用于内核客户端。
2、元数据服务器 (MDS)
MDS 执行以下操作:
为 CephFS 客户端提供元数据。
管理与 Ceph 文件系统中存储的文件相关的元数据。
协调对共享 Red Hat Ceph Storage 的访问。
缓存热元数据,以减少对后备元数据池存储的请求。
管理 CephFS 客户端的缓存,以维护缓存一致性。
在活动 MDS 之间复制热元数据.
将元数据变异到压缩日志,并定期刷新到后备元数据池。
CephFS 要求至少运行一个元数据服务器守护进程 (ceph-mds)。
二、创建ceph文件系统
重要:默认情况下,每个 Ceph 存储集群只能创建一个 CephFS。
1、查看crush rule
[root@ceph-mon01 ~]# ceph osd crush rule ls
replicated_rule
fq_rule01
2、创建两个池,一个用于存储数据,另一个用于存储元数据:
[root@ceph-mon01 ~]# ceph osd pool create cephfs_data 64 fq_rule01
pool 'cephfs_data' created
[root@ceph-mon01 ~]# ceph osd pool create cephfs_metadata 64 fq_rule01
pool 'cephfs_metadata' created
3、检测创建的两个池,使用的 crush_rule
[root@ceph-mon01 ~]# ceph osd dump |grep crush*
pool 9 'cephfs_metadata' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 64 pgp_num 64 autoscale_mode on last_change 4047 flags hashpspool stripe_width 0
4、显示创建的池
[root@ceph-mon01 ~]# ceph osd pool ls
cephfs_data
cephfs_metadata
5、创建CephFS
[root@ceph-mon01 ~]# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 9 and data pool 8
6、验证一个或多个 MDS 是否根据您的配置进入活跃状态
[root@ceph-mon01 ~]# ceph fs status cephfs
cephfs - 0 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active ceph-mon02 Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs_metadata metadata 2306 376G
cephfs_data data 0 376G
STANDBY MDS
ceph-mon01
ceph-mon03
MDS version: ceph version 16.2.10 (45fa1a083152e41a408d15505f594ec5f1b4fe17) pacific (stable)
三、为 Ceph 文件系统创建客户端用户
1、在 Ceph 监控节点上,创建一个客户端用户
将客户端限制为仅在文件系统 cephfs 的 temp 目录中写入
[root@ceph-mon01 ~]# ceph fs authorize cephfs client.1 / r /temp rw
[client.1]
key = AQCJ8qxjQlHaEhAAr69m8QKyT93WW6GdFrepvA==
要将客户端完全限制到 temp 目录,请删除根 (/) 目录:
示例:[root@mon ~]# ceph fs authorize cephfs_a client.1 /temp rw
2、验证创建的密钥:
[root@ceph-mon01 ~]# ceph auth get client.1
[client.1]
key = AQCJ8qxjQlHaEhAAr69m8QKyT93WW6GdFrepvA==
caps mds = "allow r fsname=cephfs, allow rw fsname=cephfs path=/temp"
caps mon = "allow r fsname=cephfs"
caps osd = "allow rw tag cephfs data=cephfs"
exported keyring for client.1
3、将密钥环复制到客户端。
在 Ceph 监控节点上,将密钥环导出到文件中:
[root@ceph-mon01 ~]# ceph auth get client.1 -o ceph.client.1.keyring
exported keyring for client.1
[root@ceph-mon01 ~]# ls
anaconda-ks.cfg ceph-ansible ceph.client.1.keyring new.bin test.bin test.txt
4、将 Ceph 监控节点的客户端密钥环复制到客户端节点上的 /etc/ceph/ 目录中:
[root@ceph-mon01 ~]# scp ceph.client.1.keyring root@10.255.208.17:/etc/ceph/
四、将 Ceph 文件系统挂载为内核客户端
1、安装 ceph-common 软件包:
yum install ceph-common
2、将 Ceph 客户端密钥环从 Ceph 监控节点复制到客户端节点:
[root@client ~]# scp root@ceph-mon01:/etc/ceph/ceph.client.1.keyring /etc/ceph/
3、将 Ceph 配置文件从 Ceph 监控节点复制到客户端节点:
scp root@ceph-mon01:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
[root@ceph-client01 ~]# ll /etc/ceph/
total 12
-rw-r--r-- 1 root root 212 Dec 29 09:55 ceph.client.1.keyring
-rw-r--r-- 1 ceph ceph 612 Dec 19 15:11 ceph.conf
-rw-r--r-- 1 root root 92 Jul 22 02:01 rbdmap
手动挂载
在客户端节点上创建挂载目录:
[root@client]# mkdir -p /mnt/cephfs
1、挂载 Ceph 文件系统.要指定多个 Ceph 监控地址,在 mount 命令中使用逗号将它们分隔,指定挂载点,并设置客户端名称:
[root@ceph-client01 ~]# mount -t ceph ceph-mon01:6789,ceph-mon02:6789,ceph-mon03:6789:/ /mnt/cephfs/ -o name=1
2、验证文件系统是否已成功挂载:
[root@ceph-client01 ~]# stat -f /mnt/cephfs/
File: "/mnt/cephfs/"
ID: 1050305fffffffff Namelen: 255 Type: ceph
Block size: 4194304 Fundamental block size: 4194304
Blocks: Total: 96398 Free: 96398 Available: 96398
Inodes: Total: 0 Free: -1
[root@ceph-client01 ~]# df -h
10.255.208.2:6789,10.255.208.4:6789,10.255.208.9:6789:/ 377G 0 377G 0% /mnt/cephfs
[root@ceph-client01 ~]#
自动挂载
示例
#DEVICE PATH TYPE OPTIONS DUMP FSCK
mon1:6789, /mnt/cephfs ceph name=1, 0 0
mon2:6789, ceph.client_mountpoint=/my_vol/my_sub_vol_group/my_sub_vol/0,
mon3:6789:/ _netdev,noatime
Ceph 文件系统将挂载到下一次系统启动时。
将 Ceph 文件系统挂载为 FUSE 客户端
1、安装ceph-fuse软件
[root@ceph-client02 ~]# yum install ceph-fuse -y
2、将 Ceph 客户端密钥环".keyring"和"ceph.conf"文件 从 Ceph 监控节点复制到客户端节点 /etc/ceph/
[root@ceph-client02 ~]# scp root@ceph-mon01:/etc/ceph/ceph.conf /etc/ceph/
3、使用 ceph-fuse 实用程序挂载 Ceph 文件系统
[root@ceph-client02 ~]# ceph-fuse -n client.1 /mnt/cephfs/
ceph-fuse[69553]: starting ceph client
2022-12-29T10:25:24.917+0800 7f225be363c0 -1 init, newargv = 0x560e925622c0 newargc=15
ceph-fuse[69553]: starting fuse
4、验证文件系统是否已成功挂载
stat -f /mnt/cephfs
五、卸载挂载为 FUSE 客户端的 Ceph 文件系统
[root@ceph-client02 ~]# fusermount -u /mnt/cephfs
六、添加数据池
Ceph 文件系统 (CephFS) 支持添加多个池来存储数据。
1、创建新的数据池
[root@ceph-mon01 ~]# ceph osd pool create cephfs_data_ssd 64
2、在元数据服务器控制下添加新创建的池
[root@ceph-mon01 ~]# ceph fs add_data_pool cephfs cephfs_data_ssd
added data pool 10 to fsmap
[root@ceph-mon01 ~]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data cephfs_data_ssd ]
[root@ceph-mon01 ~]#
七、关闭ceph文件系统集群
1、将 CephFS 集群标记为 down
ceph fs set cephfs down true
使用 CephFS 集群备份
ceph fs set cephfs down false
快速关闭 CephFS 集群
ceph fs fail cephfs
八、使用命令行界面删除 Ceph 文件系统
1、显示 CephFS 状态以确定 MDS 等级。
ceph fs status
2、将 CephFS 标记为 down
ceph fs set cephfs down true
3、显示 CephFS 的状态以确定它已停止:
ceph fs status
4、将 RANK 替换为 MDS 守护进程的等级失败
ceph mds fail 0
5、移除 CephFS
ceph fs rm cephfs --yes-i-really-mean-it
6、可选:删除 CephFS 使用的池。
ceph osd pool ls
7、删除元数据池
ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it
- 在减少的冗余池中存储日志数据
- 在 SSD 或 NVMe 池中存储用户主目录
- 基本数据分隔。