0. 前提
已搭建好的ceph cluster,详细步骤可参见Ceph 部署(Centos7 + Luminous)
1. 部署mds
守护进程(ceph-mgr)负责跟踪运行时间指标和Ceph群集的当前状态,包括存储利用率,当前性能指标和系统负载。 Ceph Manager守护程序还托管基于python的插件来管理和公开Ceph集群信息,包括基于Web的仪表板和REST API。 通常,至少有两名Manager需要高可用性。
[root@ceph-1 cluster]# ceph-deploy mds create ceph-1 ceph-2 ceph-3
2. 新建pool
cephfs需要两个pool:
- data pool:存放object
- meta data pool:存放元数据,可设置较高副本级别,也可调整pool的crush_ruleset,使其在ssd上存储,加快客户端响应速度
我这里直接使用默认crush_ruleset
[root@ceph-1 cluster]# ceph osd pool create cephfs_data 128
[root@ceph-1 cluster]# ceph osd pool create cephfs_metadata 128
注:
计算pg数量:
- 集群pg 总数 = (OSD 总数* 100 )/最大副本数
- 每个pool中pg总数=(OSD总数*100)/ 最大副本数 )/ 池数
- pg数需要是2的指数幂
3. 新建cephfs
新建cephfs,名字叫“cephfs”,使用刚才我们新建的两个pool
[root@ceph-1 cluster]# ceph fs new cephfs cephfs_metadata cephfs_data
4. 挂载cephfs
[root@ceph-1 cluster]# mkdir /mnt/mycephfs
[root@ceph-1 cluster]# cat ceph.client.admin.keyring
[client.admin]
key = AQDfhyBbQQf0HhAA6jGuqvK4jJGg42CnOo5iog==
创建一个文件保存admin用户的秘钥:
[root@ceph-1 ~]# vim admin.secret
将秘钥“AQDfhyBbQQf0HhAA6jGuqvK4jJGg42CnOo5iog==”粘贴到admin.secret
最后使用kernel挂载方式
[root@ceph-1 ~]# mount -t ceph ceph-1:6789,ceph-2:6789,ceph-3:6789:/ /mnt/mycephfs -o name=admin,secretfile=/root/admin.secret
注:
- mount时,mon节点有几个写几个
- 还可以使用fuse挂载方式,fuse其实坑挺多的,能不用暂时不用
由于kernel挂载方式目前不支持quota的配置,如果需要quota的配置,那么只好使用fuse挂载
4.’ fuse挂载cephfs
yum -y install ceph-fuse
#admin挂载
ceph-fuse -m ceph-1:6789,ceph-2:6789,ceph-3:6789 /mnt/admin
#非admin用户挂载(e.g., tom)
vim tom.secret #一定要按照下面的格式写
[client.tom]
key = AQCBuCxbm7CpBxAA75Qy9JbqsNpGGrwAuyBmfw==
ceph-fuse -n client.tom --keyring tom.secret -m ceph-1:6789,ceph-2:6789,ceph-3:6789 /mnt/fuse_tom1 -r /tom
注:-n client.tom 也可以写成--id,-r 把文件系统内的 root_directory 作为根挂载,而不是整个 Ceph 文件系统树。
配置quota
setfattr -n ceph.quota.max_bytes -v 100000000 /some/dir # 100 MB,比如就剩下10M,20M的文件会写10M进去
setfattr -n ceph.quota.max_files -v 6 /some/dir # < 6 files & directories
#查看配置
getfattr -n ceph.quota.max_bytes /some/dir
getfattr -n ceph.quota.max_files /some/dir
#清除配置
setfattr -n ceph.quota.max_bytes -v 0 /some/dir
setfattr -n ceph.quota.max_files -v 0 /some/dir