cephfs的简单介绍
喜欢ceph的话欢迎关注奋斗的cepher微信公众号好文!
ceph对象存储上线后,算是解决了一大问题,接下来要探索的是cephfs方面的应用,尤其现在使用的nfs时常出问题的情况下,cephfs还是十分需要的
嗯,介绍能多简单就多简单。cephfs是最迟满足生产部署的ceph接口,它提供了类似nfs的网络目录挂载形式,为远程主机使用基于文件系统的功能提供了极大的便利,不过就算是现在的L版本12.2.5,cephfs的稳定性还是没有经历过太多的考验,想想都有点害怕~
cephfs的使用-服务端准备
cephfs的使用很简单,集群建立之后,至少需要创建一个mds,首先为cephfs创建存储池
[tanweijie@ceph-205 ~]$ sudo ceph osd pool create cephfs-data-pool 64 64
[tanweijie@ceph-205 ~]$ sudo ceph osd pool create cephfs-metadata-pool 64 64
跟一般的存储池创建并无不同,接下来是创建cephfs并在创建的时候关联它所使用的存储池
[tanweijie@ceph-205 ~]$ sudo ceph fs new firstcephfs cephfs-metadata-pool cephfs-data-pool
这样就创建了名为firstcephfs的fs,顺手检查一下mds和cephfs的情况
[tanweijie@ceph-205 ~]$ sudo ceph fs status
tstfs - 1 clients
=====
+------+--------+----------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+----------------+---------------+-------+-------+
| 0 | active | ceph-205 | Reqs: 0 /s | 205k | 205k |
+------+--------+----------------+---------------+-------+-------+
+----------------------+----------+-------+-------+
| Pool | type | used | avail |
+----------------------+----------+-------+-------+
| cephfs-metadata-pool | metadata | 163M | 958G |
| cephfs-data-pool | data | 120G | 958G |
+----------------------+----------+-------+-------++-------------+
| Standby MDS |
+-------------+
+-------------+
MDS version: ceph version 12.2.5 (cad919881333ac92274171586c827e01f554a70a) luminous (stable)
这样的话cephfs的服务端ceph集群就准备好了,客户端要挂载使用cephfs的目录,有两种方式:
- 使用linux kernel client
- 使用ceph FUSE
这两种方式各有优劣势,kernel client的特点在于它与ceph通信大部分都在内核态进行,因此性能要更好,缺点是L版本的cephfs要求客户端支持一些高级特性,ceph FUSE就是简单一些,还支持配额,缺点就是性能比较差,实测全ssd的集群,性能差不多为kernel client的一半,这里我们重点看看kernel client的方式
cephfs的使用-客户端挂载
为了让低版本内核可以使用cephfs,需要手动将ceph的一些特性关闭,其操作
首先获取到crushmap并解码
[tanweijie@ceph-205 ~]$ sudo ceph osd getcrushmap -o crush.map
[tanweijie@ceph-205 ~]$ crushtool -d crush.map -o crush.txt然后在crumap中关闭两个特性:
tunable chooseleaf_vary_r 0
tunable chooseleaf_stable 0最后重新编译并插入crushmap
crushtool -c crush.txt -o newcrush.map
sudo ceph osd setcrushmap -i newcrush.map
此时对面的客户端(CentOS Linux release 7.2.1511 (Core))就可以顺利挂载cephfs了,假设挂载到/media,挂载命令为
mount -t ceph 192.x.x.x:6789:/ /media/ -o name=admin,secret=AQCbrU1bK*****
这样就挂载成功了,可以正常往里面写数据了
其他
前面的使用方式中看到,挂载cephfs的时候,源目录使用的是/,如果一个集群只提供给一个用户使用就太浪费了,能不能把集群切分成多个目录,多个用户自己挂载自己的目录进行读写呢?可以的
使用admin挂载了cephfs的/之后,只需在/中创建目录,这些创建后的目录就成为cephfs的子树,其他用户经过配置,是可以直接挂载这些子树目录的,具体步骤为:
假设admin挂载了/之后,创建了/firstuser目录
1、创建用户
sudo ceph auth get-or-create client.firstuser mon 'allow r' mds 'allow r, allow rw path=/firstuser' osd 'allow rw pool=cephfs-data-pool'
这样就创建并指定了新用户的使用目录
2、查看并获取用户的密钥
[tanweijie@ceph-205 ~]$ sudo ceph auth get client.firstuser
exported keyring for client.firstuser
[client.firstuser]key = AQCbrU1bKrKxJxAAjY11bGWT6b/9kW5XFZ+x3A==caps mds = "allow r,allow rw path=/tst1"caps mon = "allow r"caps osd = "allow rw pool=cephfs-data-pool"
3、使用该用户在其他设备上挂载他自己的目录
sudo mount -t ceph 192.x.x.x:6789:/firstuser /media/ -o name=firstuser,secret=AQCbrU1bKrKxJxAAjY11bGWT6b/9kW5XFZ+x3A==
这样就完成了用户的指定目录挂载
喜欢ceph的话欢迎关注奋斗的cepher微信公众号好文!