您的位置:首页 > 游戏 > 游戏 > cephfs初探-小试牛刀

cephfs初探-小试牛刀

2024/11/18 11:17:27 来源:https://blog.csdn.net/strugglesquirrel/article/details/141851725  浏览:    关键词:cephfs初探-小试牛刀
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微信公众号好文!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com