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/