CephFS 使用
原文:https://www.jianshu.com/p/c22ff79c4452
之前介绍了 RBD 的使用方法,有了 RBD,远程磁盘挂载的问题就解决了,但 RBD 的问题是不能多个主机共享一个磁盘,如果有一份数据很多客户端都要读写该怎么办呢?这时 CephFS 作为文件系统存储解决方案就派上用场了。
1. CephFS 安装
在已经部署好的 Ceph 集群上安装 CephFS 还是比较简单的,首先需要安装 MDS,原因是 CephFS 需要统一的元数据管理,所以 MDS 必须要有。
$ ceph-deploy --overwrite-conf mds create <cephfs-master>
剩下的就是 pool 相关的处理的了:
$ ceph osd pool create cephfs_data 1024
$ ceph osd pool create cephfs_metadata 100
$ ceph fs new cephfs cephfs_metadata cephfs_data
这样 CephFS 就已经安装好了,执行下面的命令验证一下状态,看到 up 和 active 就表示状态正常。
$ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
$ ceph mds stat
cephfs-1/1/1 up {0=cephfs-master1=up:active}
2. CephFS 物理机挂载
接下来尝试一下远程挂载刚刚创建出来的 CephFS,首先还是要在客户机上安装 Ceph,这步和远程挂载 RBD 是一样的:
# On Linux client
$ echo "<user-name> ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/<user-name>
$ sudo chmod 0440 /etc/sudoers.d/<user-name>
$ sudo apt-get install -y python
# On Ceph master
$ ceph-deploy install <Linux-client-IP>
$ ceph-deploy admin <Linux-client-IP>
然后获取 Ceph admin 用户的密钥,就是 <admin-key> 对应的部分。
$ ceph auth get client.admin
exported keyring for client.admin
[client.admin]
key = <admin-key>
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
接下来创建挂载目录,并挂载,注意替换 <monitor-ip> 和 <admin-key>,分别对应 Ceph monitor 所在的 IP 和刚刚在上一步获取的 admin 密钥。
$ sudo mkdir /mnt/cephfs
$ 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 中。
$ 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 的命令如下:
$ ceph mds add_data_pool bruce
$ ceph fs ls
.... data pools: [cephfs_data bruce ]
挂载方式和 admin 用户挂载一样:
$ sudo mount -t ceph 10.19.250.136:6789:/ /mnt/bruce -o name=bruce,secret=AQCt8qBbx4XGKBAACWG5lQHRX7FTo0nVZCYxNA==
挂载后,可以看到其他目录,但没有操作权限,只能在 /mnt/bruce/bruce 下操作。
$ /mnt/bruce$ ls
abc bruce
$ /mnt/bruce$ cd abc
$ /mnt/bruce/abc$ sudo mkdir test
mkdir: cannot create directory 'test': Permission denied
$ /mnt/bruce/abc$ cd ../bruce
$ /mnt/bruce/bruce$ mkdir test
$ /mnt/bruce/bruce$ ls
test
4. Kubernetes 集群使用 CephFS
首先把 Ceph 用户的密钥以 secret 形式存储起来,下面的命令是获取 admin 用户的密钥,如果使用其他用户,可以把 admin 替换为要使用的用户名即可。
$ ceph auth get-key client.admin | base64
QVFEMDFWVmFWdnp6TFJBQWFUVVJ5VVp3STlBZDN1WVlGUkwrVkE9PQ==
$ cat ceph-secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
data:
key: QVFEMDFWVmFWdnp6TFJBQWFUVVJ5VVp3STlBZDN1WVlGUkwrVkE9PQ==
接下来创建 PV:
$ cat cephfs-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: cephfs-pv
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
cephfs:
monitors:
- <monitor1-id>:6789
- <monitor2-id>:6789
user: admin
secretRef:
name: ceph-secret
readOnly: false
persistentVolumeReclaimPolicy: Recycle
最后创建 PVC:
$ cat cephfs-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cephfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
PV 和 PVC 都有以后,使用方式和普通的 PV 和 PVC 无异。
5. 参考文档
作者:blackpiglet
链接:https://www.jianshu.com/p/c22ff79c4452
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
CephFS 使用的更多相关文章
- Ceph RBD CephFS 存储
Ceph RBD CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ...
- Kubernetes使用cephfs作为后端存储
这里使用了k8s自身的持久化卷存储机制:PV和PVC.各组件之间的关系参考下图: PV的Access Mode(访问模式) The access modes are: ReadWriteOnce – ...
- cephfs创建及挂载
Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据.Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器. 1.添 ...
- 分布式 cephfs
参考链接: http://docs.ceph.com/docs/mimic/cephfs/
- Windows编译安装使用cephfs客户端
本文介绍如何将cephfs映射到windows的一个盘上,以磁盘映射的方式访问cephfs. 1.下载必要安装包 tdm-gcc:(安装时选32位)https://sourceforge.net/pr ...
- ceph 文件系统(cephfs) -- 初体验
一.介绍: ceph MDS 是元数据服务器,只有ceph 文件系统(cephFS)才会需要. cephFS 在RADOS 层之上 提供一个兼容POSIX 的文件系统.他是用MDS 作为守护进程,负责 ...
- kubernetes挂载ceph rbd和cephfs的方法
目录 k8s挂载Ceph RBD PV & PVC方式 创建secret 创建PV 创建PVC 创建deployment挂载PVC StorageClass方式 创建secret 创建Stor ...
- 基于Harbor和CephFS搭建高可用Private Registry
我们有给客户搭建私有容器仓库的需求.开源的私有容器registry可供选择的不多,除了docker官方的distribution之外,比较知名的是VMware China出品的Harbor,我们选择了 ...
- kubernetes多节点的pod挂载同一个cephfs目录
一.安装cephfs 方法一: 直接进入deploy目录,执行: ceph-deploy --overwrite-conf mds create ceph01:mds-daemon- 上面的ceph0 ...
- 操作cephfs的基本命令
[前提是已有一个基本可用的ceph集群] 一,在指定节点上部署mds: ceph-deploy mds create ceph-node1 二,新建两个存储池,用于保存cephfs的数据和元数据. c ...
随机推荐
- [原创]Android Monkey测试工具使用介绍
[原创]Android Monkey测试工具使用介绍 1 Android Monkey介绍 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件 ...
- [技术博客]采用Bootstrap框架进行排版布局
[技术博客]采用Bootstrap框架进行排版布局 网页的前端框架有很多很多种,比如Bootstrap.Vue.Angular等等,在最开始其实并没有考虑到框架这回事,开始阅读往届代码时发现其部分采用 ...
- Java基础 awt Button 点击按钮后在控制台输出文字
JDK :OpenJDK-11 OS :CentOS 7.6.1810 IDE :Eclipse 2019‑03 typesetting :Markdown code ...
- Sequelize模糊查询
const Sequelize = require('sequelize'); const Op = Sequelize.Op; User.findAll({ raw: true, order: [ ...
- WebGL学习笔记(六):纹理贴图
只可以绘制纯色的模型是不够的,为了呈现出更真实的模型,我们还需要通过纹理贴图给模型进行上色. 丢失上下文 GPU作为一种公用资源,是会被多个进程同时使用的,在资源不足的情况下(比如PC或手机系统进入休 ...
- 【SpringBoot】SpringBoot配置与单元测试(二)
SpringBoot项目创建参考[SpringBoot]SpringBoot快速入门(一) 本文介绍SpringBoot项目的POM文件.配置与单元测试 POM文件 1.SpringBoot的pom文 ...
- leetcode No.242 有效的字母异位词 valid-anagram (Python3实现)
题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram&q ...
- (原)ffmpeg中的writing_filter翻译
本文的主要目的是梳理,记录自己在学习开发ffmpeg视频滤镜的笔记.参考的主要内容是根据ffmpeg中doc下的writing_filter.txt文件以及ffmpeg的源码. author:liha ...
- python中实现延时回调普通函数示例代码
python中实现延时回调普通函数示例代码 这篇文章主要给大家介绍了关于python中实现延时回调普通函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的 ...
- IBM X3650 M4 安装 Windows Server 2008 R2
1 准备好 Windows Server 2008 R2 安装用的U盘 2 采用PowerISO制作启动U盘: 或者用Rufus做启动U盘. 3 接上启动U盘 4 设置Bios启动模式为 UEFI ...