原文:https://www.jianshu.com/p/c22ff79c4452

之前介绍了 RBD 的使用方法,有了 RBD,远程磁盘挂载的问题就解决了,但 RBD 的问题是不能多个主机共享一个磁盘,如果有一份数据很多客户端都要读写该怎么办呢?这时 CephFS 作为文件系统存储解决方案就派上用场了。

1. CephFS 安装

在已经部署好的 Ceph 集群上安装 CephFS 还是比较简单的,首先需要安装 MDS,原因是 CephFS 需要统一的元数据管理,所以 MDS 必须要有。

  1. $ ceph-deploy --overwrite-conf mds create <cephfs-master>

剩下的就是 pool 相关的处理的了:

  1. $ ceph osd pool create cephfs_data 1024
  2. $ ceph osd pool create cephfs_metadata 100
  3. $ ceph fs new cephfs cephfs_metadata cephfs_data

这样 CephFS 就已经安装好了,执行下面的命令验证一下状态,看到 up 和 active 就表示状态正常。

  1. $ ceph fs ls
  2. name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
  3. $ ceph mds stat
  4. cephfs-1/1/1 up {0=cephfs-master1=up:active}

2. CephFS 物理机挂载

接下来尝试一下远程挂载刚刚创建出来的 CephFS,首先还是要在客户机上安装 Ceph,这步和远程挂载 RBD 是一样的:

  1. # On Linux client
  2. $ echo "<user-name> ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/<user-name>
  3. $ sudo chmod 0440 /etc/sudoers.d/<user-name>
  4. $ sudo apt-get install -y python
  5. # On Ceph master
  6. $ ceph-deploy install <Linux-client-IP>
  7. $ ceph-deploy admin <Linux-client-IP>

然后获取 Ceph admin 用户的密钥,就是 <admin-key> 对应的部分。

  1. $ ceph auth get client.admin
  2. exported keyring for client.admin
  3. [client.admin]
  4. key = <admin-key>
  5. caps mds = "allow *"
  6. caps mgr = "allow *"
  7. caps mon = "allow *"
  8. caps osd = "allow *"

接下来创建挂载目录,并挂载,注意替换 <monitor-ip><admin-key>,分别对应 Ceph monitor 所在的 IP 和刚刚在上一步获取的 admin 密钥。

  1. $ sudo mkdir /mnt/cephfs
  2. $ sudo mount -t ceph <monitor-ip>:6789:/ /mnt/cephfs/ -o name=admin,secret=<admin-key>

至此就已经挂载成功了,可以在挂载的目录下创建新目录,写入新文件,在其他同样挂载该 CephFS 的服务器上,也能看到同样的变化。

如果想做到开机启动就挂载 CephFS,请参考 使用ceph的文件存储CephFS

3. CephFS 用户隔离

上一步已经实现了远程挂载,和文件共享,但如果多个产品同时使用一个 CephFS,如果数据都互相可见,显然是不够安全的,那么就要做隔离,咱们接下来就来看看 CephFS 是如何做到这点的。

CephFS 这个文件系统还是统一的,所以隔离是在用户层面做的,具体的做法是:限定某个用户只能访问某个目录。

下面这个命令创建了一个叫 bruce 的用户,这个用户只能访问目录 /bruce,数据存储在 pool cephfs_data 中。

  1. $ ceph auth get-or-create client.bruce mon 'allow r' mds 'allow r, allow rw path=/bruce' osd 'allow rw pool=cephfs_data'

如果要做进一步的隔离,想让不通用户的数据存储在不同的 pool,可以用命令将 pool 加入的 CephFS 中,再用命令指定,加入 pool 的命令如下:

  1. $ ceph mds add_data_pool bruce
  2. $ ceph fs ls
  3. .... data pools: [cephfs_data bruce ]

挂载方式和 admin 用户挂载一样:

  1. $ sudo mount -t ceph 10.19.250.136:6789:/ /mnt/bruce -o name=bruce,secret=AQCt8qBbx4XGKBAACWG5lQHRX7FTo0nVZCYxNA==

挂载后,可以看到其他目录,但没有操作权限,只能在 /mnt/bruce/bruce 下操作。

  1. $ /mnt/bruce$ ls
  2. abc bruce
  3. $ /mnt/bruce$ cd abc
  4. $ /mnt/bruce/abc$ sudo mkdir test
  5. mkdir: cannot create directory 'test': Permission denied
  6. $ /mnt/bruce/abc$ cd ../bruce
  7. $ /mnt/bruce/bruce$ mkdir test
  8. $ /mnt/bruce/bruce$ ls
  9. test

4. Kubernetes 集群使用 CephFS

首先把 Ceph 用户的密钥以 secret 形式存储起来,下面的命令是获取 admin 用户的密钥,如果使用其他用户,可以把 admin 替换为要使用的用户名即可。

  1. $ ceph auth get-key client.admin | base64
  2. QVFEMDFWVmFWdnp6TFJBQWFUVVJ5VVp3STlBZDN1WVlGUkwrVkE9PQ==
  3. $ cat ceph-secret.yaml
  4. apiVersion: v1
  5. kind: Secret
  6. metadata:
  7. name: ceph-secret
  8. data:
  9. key: QVFEMDFWVmFWdnp6TFJBQWFUVVJ5VVp3STlBZDN1WVlGUkwrVkE9PQ==

接下来创建 PV:

  1. $ cat cephfs-pv.yaml
  2. apiVersion: v1
  3. kind: PersistentVolume
  4. metadata:
  5. name: cephfs-pv
  6. spec:
  7. capacity:
  8. storage: 10Gi
  9. accessModes:
  10. - ReadWriteMany
  11. cephfs:
  12. monitors:
  13. - <monitor1-id>:6789
  14. - <monitor2-id>:6789
  15. user: admin
  16. secretRef:
  17. name: ceph-secret
  18. readOnly: false
  19. persistentVolumeReclaimPolicy: Recycle

最后创建 PVC:

  1. $ cat cephfs-pvc.yaml
  2. kind: PersistentVolumeClaim
  3. apiVersion: v1
  4. metadata:
  5. name: cephfs-pvc
  6. spec:
  7. accessModes:
  8. - ReadWriteMany
  9. resources:
  10. requests:
  11. storage: 10Gi

PV 和 PVC 都有以后,使用方式和普通的 PV 和 PVC 无异。

5. 参考文档

作者:blackpiglet
链接:https://www.jianshu.com/p/c22ff79c4452
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

CephFS 使用的更多相关文章

  1. Ceph RBD CephFS 存储

    Ceph RBD  CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ...

  2. Kubernetes使用cephfs作为后端存储

    这里使用了k8s自身的持久化卷存储机制:PV和PVC.各组件之间的关系参考下图: PV的Access Mode(访问模式) The access modes are: ReadWriteOnce – ...

  3. cephfs创建及挂载

    Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据.Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器. 1.添 ...

  4. 分布式 cephfs

    参考链接: http://docs.ceph.com/docs/mimic/cephfs/

  5. Windows编译安装使用cephfs客户端

    本文介绍如何将cephfs映射到windows的一个盘上,以磁盘映射的方式访问cephfs. 1.下载必要安装包 tdm-gcc:(安装时选32位)https://sourceforge.net/pr ...

  6. ceph 文件系统(cephfs) -- 初体验

    一.介绍: ceph MDS 是元数据服务器,只有ceph 文件系统(cephFS)才会需要. cephFS 在RADOS 层之上 提供一个兼容POSIX 的文件系统.他是用MDS 作为守护进程,负责 ...

  7. kubernetes挂载ceph rbd和cephfs的方法

    目录 k8s挂载Ceph RBD PV & PVC方式 创建secret 创建PV 创建PVC 创建deployment挂载PVC StorageClass方式 创建secret 创建Stor ...

  8. 基于Harbor和CephFS搭建高可用Private Registry

    我们有给客户搭建私有容器仓库的需求.开源的私有容器registry可供选择的不多,除了docker官方的distribution之外,比较知名的是VMware China出品的Harbor,我们选择了 ...

  9. kubernetes多节点的pod挂载同一个cephfs目录

    一.安装cephfs 方法一: 直接进入deploy目录,执行: ceph-deploy --overwrite-conf mds create ceph01:mds-daemon- 上面的ceph0 ...

  10. 操作cephfs的基本命令

    [前提是已有一个基本可用的ceph集群] 一,在指定节点上部署mds: ceph-deploy mds create ceph-node1 二,新建两个存储池,用于保存cephfs的数据和元数据. c ...

随机推荐

  1. ansible-playbook-常用

    创建软链:file: - name: create link hosts: "{{hosts_ip}}" tasks: - name: create link file: src= ...

  2. linux运维 技能 2018

    1.监控与日志 prometheus.grafana.zabbix ELK(elasticsearch logstash filebeat kibana) 2.容器类 harbor映像管理 docke ...

  3. 冰多多团队alpha阶段发布说明

    标题:冰多多Alpha阶段发布说明 Alpha版本功能介绍 我们项目当前是两个部分,前端编辑器和后端mtermux是分开的,是两个独立的app项目,还没有完美的连起来(我们alpha阶段目标任务是不必 ...

  4. Unable to resolve dependency for ':app@debug/compileClasspath' could not resolve com.android.support:design:28.0.0

    使用AndroidStudio3.2报这个错 配置 解决方法 1)去掉代理 gradle目录的下代理属性也 注销掉.   2)项目的gradle设定 3)设定项目的gradle-wrapper.pro ...

  5. 【深入学习linux】Linux命令格式

    一.命令基本格式 命令提示符 [root@localhost ~]# root 代表当前登录用户,Linux当中管理员账号是 root localhost 代表主机名 ~ 代表当前所在目录(家目录), ...

  6. vue中axios使用二:axios以post,get,jsonp的方式请求后台数据

    本文为博主原创,转载请注明出处 axios在上一篇中讲过:vue中axios使用一:axios做拦截器,axios是请求后台资源的模块,用来请求后台资源. axios本身是支持get,post请求后台 ...

  7. 关于Flink slot 和kafka topic 分区关系的说明

    今天又有小伙伴在群里问 slot 和 kafka topic 分区(以下topic,默认为 kafka 的 topic )的关系,大概回答了一下,这里整理一份 首先必须明确的是,Flink Task ...

  8. Python - importlib 模块

    importlib 模块可以根据字符串来导入相应的模块 目录结构: 在根目录下创建 importlib_test.py 和 aaa/bbb.py bbb.py: class Person(object ...

  9. Tplink路由器怎么设置无线桥接(转载)

    原始文章路径:http://www.pc6.com/video/8548.html .以下为转载内容(少量修改) 第1步 进入副路由器后台,选择网络参数,LAN口设置,把IP地址改成目标网络同一段的I ...

  10. 【转】Centos下编译升级安装Boost

    https://www.xingchenw.cn/article/191 Centos下编译升级安装Boost 首先在官网现在相应的包 https://www.boost.org/users/down ...