Ceph wen件系统的名称是 CephFS ,它是一个 POSIX 兼容的分布式文件系统,并使用Ceph RADOS 存储数据 。要实现 Ceph wen件系统,需要一个正常运行的 Ceph 存储集群,并且至少包含一个 Ceph 元数据服务器( Ceph Metadata Server, MDS) 。
客户端可以通过两种方式使用 Ceph wen件系统:使用本地内核驱动程序挂载 CephFS ,或者使用 Ceph FUSE。

(1)准备一个健康的ceph 集群

[root@node140 mds]# ceph -s
cluster:
id: 58a12719-a5ed-4f95-b312-6efd6e34e558
health: HEALTH_OK

services:
mon: 2 daemons, quorum node140,node142 (age 22h)
mgr: admin(active, since 6d), standbys: node140
osd: 16 osds: 16 up (since 17h), 16 in (since 3d)

data:
pools: 5 pools, 768 pgs
objects: 2.61k objects, 9.8 GiB
usage: 47 GiB used, 8.7 TiB / 8.7 TiB avail
pgs: 768 active+clean

(2)创建元数据目录

[root@node140 ceph]# mkdir /var/lib/ceph/mds/ceph-node140 -pv

(3)为bootstrap-mds客户端创建一个密钥

[root@node140 ceph]# # ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds

(4)在ceph auth库中创建bootstrap-mds客户端,赋予权限添加之前创建的密钥

[root@node140 ceph]# ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring

(5)在root家目录里创建ceph.bootstrap-mds.keyring文件

[root@node140 ceph]#touch /root/ceph.bootstrap-mds.keyring

(6)把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring里的密钥导入家目录下的ceph.bootstrap-mds.keyring文件里

[root@node140 ceph]# ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring ceph.bootstrap-mds.keyring

(7)在auth库中创建mds.a用户,并赋予权限和创建密钥,密钥保存在/var/lib/ceph/mds/ceph-node140/keyring文件里

[root@node140 ceph]# ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.a osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-a/keyring

(8)赋予文件权限

[root@node140 ceph]# chown -R ceph.ceph /var/lib/ceph/mds/ceph-node140

(9)配置文件中添加MDS节点

vim /etc/ceph/ceph.conf
[mds.node140]
host = node140

(10)启动ceph

[root@node140 mds]# systemctl enable ceph-mds@node140
[root@node140 mds]# systemctl start ceph-mds@node140
[root@node140 mds]# systemctl status ceph-mds@node140

(11)其他节点添加MDS

[root@node141 ceph]# vim /etc/ceph/ceph.conf
[mds.node140]
host = node140
[mds.node141]
host = node141

[root@node140 ceph]# scp /var/lib/ceph/bootstrap-mds/ceph.keyring node141:/etc/ceph/
[root@node140 ceph]# scp /root/ceph.bootstrap-mds.keyring node141:/etc/ceph/
[root@node141 ceph]# mkdir /var/lib/ceph/mds/ceph-node141/ -pv
[root@node141 ceph]# cp /etc/ceph/ceph.keyring /var/lib/ceph/bootstrap-mds/
[root@node141 ceph]# ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring
[root@node141 ceph]# ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node141 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node141/keyring

[root@node141 ceph]# systemctl start ceph-mds@node141
[root@node141 ceph]# systemctl status ceph-mds@node141
[root@node141 ceph]# systemctl enable ceph-mds@node141

(12)#创建cephfs_data pool

[root@node140 mds]# ceph osd pool create cephfs_data 128
pool 'cephfs_data' created

(13)创建cephfs metadata pool

[root@node140 mds]# ceph osd pool create cephfs_metadata 128
pool 'cephfs_metadata' created

(14)创建cephfs

[root@node140 mds]# ceph fs new cephfs cephfs_metadata cephfs_data
new fs with metadata pool 7 and data pool 6

(15) 查看cephfs

[root@node140 mds]# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

[root@node140 mds]# ceph mds stat
cephfs:1 {0=node140=up:active}

客户端使用内核驱动程序挂载cephfs

(1)服务器节点查看ceph.client.admin.keyring

[root@node140 ceph-node140]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQB9w2BdnggFIBAA7SR+7cO/PtZl9PTlriBL1A==
caps mds = "allow "
caps mgr = "allow
"
caps mon = "allow "
caps osd = "allow
"

[root@docker38 ceph]# vim admin.key #复制ceph.client.admin.keyring,内容到客户端
[root@docker38 ceph]# chown 600 admin.key

(2)挂载使用

[root@docker38 ceph]# mount -t ceph node140:6789:/ /mnt -o name=admin,secret=AQB9w2BdnggFIBAA7SR+7cO/PtZl9PTlriBL1A==

(3)centos7开机挂载

[root@docker38 ~]# vim /etc/rc.local
mount -t ceph node140:6789:/ /mnt -o name=admin,secret=AQB9w2BdnggFIBAA7SR+7cO/PtZl9PTlriBL1A==
如果开机不自动执行 /etc/rc.local
[root@docker38 ~]# chmod +x /etc/rc.d/rc.local

客户端通过FUSE方式挂在cephfs

(1)客户端安装ceph-fuse软件包

[root@docker38 ceph]# yum -y install ceph-fuse

(2)创建挂载目录

[root@docker38 ~]# mkdir /ceph/cephfs -pv

(3)从服务器断,将客户端密钥复制到/etc/ceph/

[root@node140 ceph]# scp ceph.client.admin.keyring [email protected]:/etc/ceph/

(4)挂载cephfs

[root@docker38 ~]# ceph-fuse -m node140:6789 /ceph/cephfs/

(5)查看挂载

[root@docker38 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 46G 24G 22G 54% /
devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs 4.9G 0 4.9G 0% /dev/shm
tmpfs 4.9G 8.9M 4.8G 1% /run
tmpfs 4.9G 0 4.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 255M 760M 26% /boot
10.10.202.140:6789:/ 2.8T 0 2.8T 0% /mnt
tmpfs 984M 0 984M 0% /run/user/0
ceph-fuse 2.8T 0 2.8T 0% /ceph/cephfs

(6)开机自动挂载

[root@docker38 ~]# vim /etc/rc.local
ceph-fuse -m node140:6789 /ceph/cephfs/