Ceph集群CephFS文件存储核心概念及部署使用详解

目录
  • 1.CephFS文件存储核心概念
    • 1.1.CephFS文件存储简介
    • 1.2.CephFS文件存储架构
    • 1.3.CephFS文件系统的应用场景与特性
  • 2.在Ceph集群中部署MDS组件
  • 3.在Ceph集群中创建一个CephFS文件存储系统
    • 3.1.为CephFS文件存储系统创建Pool资源池
    • 3.2.创建CephFS文件系统
    • 3.3.再次观察Ceph集群的状态
  • 4.内核级别挂载CephFS文件系统
    • 4.1.无需认证的方式挂载CephFS文件系统
    • 4.2.使用认证方式挂载CephFS文件系统
  • 5.用户空间挂载CephFS文件系统
  • 6.查看CephFS的状态

1.CephFS文件存储核心概念

1.1.CephFS文件存储简介

官方文档:docs.ceph.com/en/pacific/…

传统的文件存储通常使用的是NAS存储,通过NFS协议来实现,NFS类型的文件存储可以同时共享给多个客户端使用,传输协议简单,只要有网络就可以实现。

对于存储而言,高可用性是必须具备的,一旦存储宕机,就会影响应用程序的使用,而NAS存储最典型的缺点就是单点故障。

在Ceph分布式存储系统中有关于文件存储的存储类型,称之为CephFS,CephFS是一个符合POSIX的文件系统,构建在Ceph对象存储Rados之上,CephFS可以为各种应用程序提供最先进的、多用途、高可用性和高性能的文件存储。

CephFS文件系统至少需要一个MDS(Metadata Server组件)来存储文件系统的元数据信息,因此在使用CephFS文件存储之前,首先要在集群中部署MDS组件,我们希望CephFS文件存储具备高可用性,所以MDS组件一般都会在集群中部署多个,大多数情况下都是三个MDS组件。

CephFS支持用户级别和内核级别的挂载使用,可扩展性极高,并且可以同时让多个Client客户端进行读写。

简而言之:CephFS文件存储就是提供类似NFS服务的共享存储系统,相当于基于NFS的分布式文件存储系统,多个客户端可以同时去挂载这个文件存储系统,并且还可以提供高可靠服务。

1.2.CephFS文件存储架构

CephFS文件系统的核心组件有:

MDS:MDS组件主要用于保存文件的元数据信息,会单独存放在一个Pool资源池中。

MDS支持高可用性,默认采用主备模式,也可以配置成多主模式。

Client:客户端。

RADOS:CephFS也是基于RADOS来实现文件存储的,CephFS文件存储中的文件数据与文件的元数据都是单独在不同的Pool资源池中存储的。

Ceph集群如果想要实现CephFS文件存储,首先需要在集群中准备MDS组件,MDS组件主要是来保存文件存储中文件的元数据信息,一般会部署三个MDS组件,形成高可用模式,其中一个MDS的Active状态提供服务,另外两个都是Standby的状态,当Active状态的MDS挂掉后,Standby状态的MDS之间会就进行选举,选举成功的MDS节点就会成为集群中的Active。

MDS组件会将文件的元数据信息写在Journal日志中,最终Journal日志中的文件元数据信息会写入到一个Metadata的Pool资源池中,所有的MDS节点都会连接这个Pool资源池,并且MDS各节点之间会交换元数据信息,当Active状态的MDS组件挂掉了,选举出来的MDS会从Metadata Pool资源池获取整个集群中所有文件的元数据信息。

CephFS会将用户写入的文件数据与文件的元数据分开存放在不同的Pool资源池中,将数据与元数据分开存储。

Client客户端可以直接在存放数据的Pool资源池中写入文件数据,写入的文件依旧会被拆分成多个Object对象文件,这些Object对象文件写入到PG中,最后通过CRUSH算法存储在多个OSD中。

1.3.CephFS文件系统的应用场景与特性

应用场景:

  • 为K8S集群Pod资源提供持久化存储。
  • 多个服务器同时挂载一个文件系统,同时进行读写。

CephFS文件系统多MDS的优势及特点:

  • 当元数据默认的单个MDS成为瓶颈时,配置多个活跃的MDS守护进程,提升集群性能。
  • 多个活跃的MDS有利于性能提升。
  • 多个活跃的MDS可以实现MDS负载均衡。
  • 多个活跃的MDS可以实现多租户资源隔离。
  • 它能够将文件系统树分割成子树,每个子树可以交给特定的MDS进行权威管理,从而达到了随着元数据服务器数量的增加,集群性能线性地扩展。
  • 每个子树都是基于元数据在给定目录树中的热动态创建的。
  • 一旦创建了子树,它的元数据就被迁移到一个未加载的MDS。
  • 后续客户端对先前授权的MDS的请求被转发。

2.在Ceph集群中部署MDS组件

 1.在集群所有节点都安装mds组件
 yum -y install ceph-mds
 2.将所有的ceph节点都部署mds组件形成高可用集群
 [root@ceph-node-1 ~]# cd /data/ceph-deploy/
 [root@ceph-node-1 ceph-deploy]# ceph-deploy mds create ceph-node-1 ceph-node-2 ceph-node-3

 3.查看集群状态
 [root@ceph-node-1 ceph-deploy]# ceph -s
   cluster:
     id:     a5ec192a-8d13-4624-b253-5b350a616041
     health: HEALTH_OK
   services:
     mon: 3 daemons, quorum ceph-node-1,ceph-node-2,ceph-node-3 (age 19h)
     mgr: ceph-node-1(active, since 19h), standbys: ceph-node-2, ceph-node-3
     mds:  3 up:standby
     osd: 6 osds: 6 up (since 18h), 6 in (since 18h)
     rgw: 1 daemon active (ceph-node-1)
   task status:
   data:
     pools:   7 pools, 320 pgs
     objects: 252 objects, 161 KiB
     usage:   6.1 GiB used, 54 GiB / 60 GiB avail
     pgs:     320 active+clean

可以看到集群中已经有3个MDS组件了,但是状态都处于standby,那是因为集群中还没有创建CephFS文件系统,导致MDS组件无法选举。

3.在Ceph集群中创建一个CephFS文件存储系统

一个Cephfs文件存储系统至少需要两个Rados资源池,一个资源池用于存放文件数据,另一个资源池用于存放文件的元数据信息,如果元数据资源池中的任何数据丢失,都有可能导致整个文件系统无法访问。

对元数据资源池建议使用较低延迟的OSD,例如可以使用SSD硬盘的OSD,元数据资源池的延迟直接会影响在客户端中文件系统操作的延迟。

3.1.为CephFS文件存储系统创建Pool资源池

创建好这两个Pool资源池后,只能为一个cephfs文件存储系统使用,如果集群中需要创建多个cephfs文件系统,则需要创建多个元数据池和数据池,一个元数据资源池和数据资源池只能为一个Cephfs文件系统提供使用。

 1.创建元数据资源池
 [root@ceph-node-1 ~]# ceph osd pool create cephfs_metadata 16 16
 pool 'cephfs_metadata' created
 2.创建数据资源池
 [root@ceph-node-1 ~]# ceph osd pool create cephfs_data 16 16
 pool 'cephfs_data' created
 3.查看创建的资源池
 [root@ceph-node-1 ~]# ceph osd lspools
 1 ceph-rbd-data
 2 .rgw.root
 3 default.rgw.control
 4 default.rgw.meta
 5 default.rgw.log
 6 default.rgw.buckets.index
 7 default.rgw.buckets.data
 8 cephfs_metadata
 9 cephfs_data

3.2.创建CephFS文件系统

命令格式:ceph fs new {cephfs_name} {metadata_pool} {data_pool}

 1.创建cephfs文件存储
 [root@ceph-node-1 ~]# ceph fs new cephfs-storage cephfs_metadata cephfs_data
 new fs with metadata pool 8 and data pool 9
 2.查看创建的cephfs文件存储
 [root@ceph-node-1 ~]# ceph fs  ls
 name: cephfs-storage, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
 [root@ceph-node-1 ~]# ceph fs volume ls
 [
     {
         "name": "cephfs-storage"
     }
 ]

3.3.再次观察Ceph集群的状态

 [root@ceph-node-1 ~]# ceph -s
   cluster:
     id:     a5ec192a-8d13-4624-b253-5b350a616041
     health: HEALTH_OK
   services:
     mon: 3 daemons, quorum ceph-node-1,ceph-node-2,ceph-node-3 (age 24h)
     mgr: ceph-node-1(active, since 24h), standbys: ceph-node-2, ceph-node-3
     mds: cephfs-storage:1 {0=ceph-node-1=up:active} 2 up:standby                    #当创建完cephfs文件系统后,mds组件自动选举一个mds组件为active状态,其余为standby状态
     osd: 6 osds: 6 up (since 23h), 6 in (since 23h)
     rgw: 1 daemon active (ceph-node-1)
   task status:
   data:
     pools:   9 pools, 352 pgs
     objects: 274 objects, 164 KiB
     usage:   6.1 GiB used, 54 GiB / 60 GiB avail
     pgs:     352 active+clean

4.内核级别挂载CephFS文件系统

挂载的操作文档:docs.ceph.com/en/pacific/…

4.1.无需认证的方式挂载CephFS文件系统

1)在客户端中创建挂载目录

 [root@ceph-node-1 ~]# mkdir /cephfs_data

2)使用内核级别挂载Cephfs文件系统

CephFS系统可以理解为也是一个磁盘,类型是ceph的类型,直接可以通过mount命令进行挂载。

命令格式:mount -t ceph {monitor_addr}:/ /{path} -o name=admin

挂载时最好指定所有monitor组件的地址,否则当有一个monitor组件产生问题,就会影响挂载。

 1.首先确认mount是否支持ceph类型的文件系统,如果不支持则去安装ceph-common包
 [root@ceph-node-1 ~]# which mount.ceph
 /usr/sbin/mount.ceph
 2.挂载cephfs文件系统
 [root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ /cephfs_data/ -o name=admin
 #这个admin用户是ceph集群默认的用户,不需要指定secret key
 3.查看是否挂载成功
 [root@ceph-node-1 ~]# df -hT /cephfs_data/
 文件系统                                                   类型  容量  已用  可用 已用% 挂载点
 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ ceph   17G     0   17G    0% /cephfs_data
 4.此时就可以在挂载目录中写入数据了。

4.2.使用认证方式挂载CephFS文件系统

1.获取admin用户的Key

 [root@ceph-node-1 ~]# cat /etc/ceph/ceph.client.admin.keyring
 [client.admin]
     key = AQBIWUhiEmaFOBAA6Jr6itUeHiLVVOeYFVpRog==
     caps mds = "allow *"
     caps mgr = "allow *"
     caps mon = "allow *"
     caps osd = "allow *"

2.通过认证方式挂载CephFS文件系统

[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ /cephfs_data/ -o name=admin,secret=AQBIWUhiEmaFOBAA6Jr6itUeHiLVVOeYFVpRog==

3.查看是否挂载成功

[root@ceph-node-1 ~]# df -hT /cephfs_data/
文件系统                                                   类型  容量  已用  可用 已用% 挂载点
192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ ceph   17G     0   17G    0% /cephfs_data

4.设置开机自动挂载

[root@ceph-node-1 ~]# vim /etc/fstab
192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/      /cephfs_data    ceph    name=admin,secret=AQBIWUhiEmaFOBAA6Jr6itUeHiLVVOeYFVpRog== 0 0

也可以将用户的Key写入到一个文件中,然后引用这个文件,如下所示:

1.将key写入到一个文件中
[root@ceph-node-1 ~]# ceph-authtool -p /etc/ceph/ceph.client.admin.keyring > admin.key
[root@ceph-node-1 ~]# chmod 600 admin.key
2.挂载时引用这个Key文件
[root@ceph-node-1 ~]# mount -t ceph 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/ /cephfs_data/ -o name=admin,secretfile=/root/admin.key
3.开机自动挂载
192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789:/      /cephfs_data    ceph    name=admin,secretfile=/root/admin.key 0 0

5.用户空间挂载CephFS文件系统

1.安装ceph-fuse客户端
[root@ceph-node-1 ~]# yum -y install ceph-fuse
2.创建挂载点
[root@ceph-node-1 ~]# mkdir /cephfuse-data
3.使用fuse挂载
[root@ceph-node-1 ~]# ceph-fuse -n client.admin -m 192.168.20.20:6789,192.168.20.21:6789,192.168.20.22:6789 /cephfuse-data/
2022-04-03 23:37:18.794 7f5574ca7f80 -1 init, newargv = 0x5615fadddb50 newargc=9ceph-fuse[31903]: starting ceph client
ceph-fuse[31903]: starting fuse
4.查看挂载的文件系统
ceph-fuse[31903]: starting fuse
[root@ceph-node-1 ~]# df -HT /cephfuse-data/
文件系统       类型            容量  已用  可用 已用% 挂载点
ceph-fuse      fuse.ceph-fuse   19G     0   19G    0% /cephfuse-data

6.查看CephFS的状态

[root@ceph-node-1 ~]# ceph fs status cephfs-storage

以上就是Ceph集群CephFS文件存储核心概念及部署使用详解的详细内容,更多关于Ceph CephFS文件存储部署的资料请关注我们其它相关文章!

(0)

相关推荐

  • ceph集群RadosGW对象存储使用详解

    目录 什么是对象存储 ceph对象存储的构成 RadosGW存储池作用 RadosGW常用操作详解 操纵radosgw 需要先安装好python3环境,以及python的boto模块 python脚本编写 一个完整的ceph集群,可以提供块存储.文件系统和对象存储. 本节主要介绍对象存储RadosGw功能如何灵活的使用 集群背景: $ ceph -s cluster: id: f0a8789e-6d53-44fa-b76d-efa79bbebbcf health: HEALTH_OK servi

  • Ceph分布式存储集群Pool资源池简介及使用小结

    目录 1.Pool资源池的概念 2.Pool资源池的基本操作 2.1.创建一个Pool资源池 2.2.为资源池设置应用模式 2.3.查看资源池设置的应用模式 2.4.查看OSD所有的资源池 2.5.查看资源池的PG数量和PGP数量 2.6.查看资源池的副本数量 2.7.查看资源池的类型 2.8.设置资源池的PG数量以及PGP数量 2.9.设置资源池的副本数量 2.10.设置资源池的最大object对象数量 2.11.重命名资源池 2.12.查看资源池的统计信息 2.13.查看资源池的利用率 2.

  • Centos7下yum安装Ceph分布式存储教程

    目录 前言 配置yum源,epel源 配置Ceph源 安装Ceph及组件 前言 本文讲述了Ceph应该如何安装,掌握方法后,可自行选择安装哪个版本的Ceph. 配置yum源,epel源 首先机器需要联网,并且配置网络yum源,epel源,可从阿里开源镜像站中下载源文件. 注:EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为"红帽系"的操作系统提供额外的软件包,适用于RHEL.CentOS和Scientific Linu

  • Centos7.0安装ceph(JEWEL)及以上版本的实例解析

    背景 由于docker的Ceph插件rexray对Ceph版本有一定的要求,当Ceph版本为hammer (0.94.10)时,rexray无法成功创建rbd设备.CentOS 7及以上版本,默认安装的就是hammer版本,因此,我们需要安装更高的jewel版本.Ceph的版本可参见. 安装 为了安装速度,我们可以选用国内源.通常大家使用的国内源包括: 网易 http://mirrors.163.com/ceph 中科大 http://mirrors.ustc.edu.cn/ceph 阿里 ht

  • linux下ceph分布式安装使用教程

    目录 前言 一.基础环境 1.服务分布情况 2. 网络配置 (所有节点) 3.SSH免密访问 (所有节点) 二.安装 1.将新挂载的硬盘格式化,作为osd的存储(有osd节点的都要做) 2.在管理节点node1安装ceph-deploy管理工具 3.在所有主机上安装ceph 4.在管理节点上安装Monitor(监控) 5.创建osd 6.激活osd 7.部署mds 前言 k8s集群使用什么样的存储比较好那,我调研了一下分布式存储ceph,在这里分享给大家. 一.基础环境 1.服务分布情况 Nod

  • Ceph集群CephFS文件存储核心概念及部署使用详解

    目录 1.CephFS文件存储核心概念 1.1.CephFS文件存储简介 1.2.CephFS文件存储架构 1.3.CephFS文件系统的应用场景与特性 2.在Ceph集群中部署MDS组件 3.在Ceph集群中创建一个CephFS文件存储系统 3.1.为CephFS文件存储系统创建Pool资源池 3.2.创建CephFS文件系统 3.3.再次观察Ceph集群的状态 4.内核级别挂载CephFS文件系统 4.1.无需认证的方式挂载CephFS文件系统 4.2.使用认证方式挂载CephFS文件系统

  • 在Kubernetes集群中搭建Istio微服务网格的过程详解

    目录 1.使用sealos部署快速部署K8S集群 1.1.基本环境配置 1.2.部署K8S集群 2.在K8S集群中部署Istio网格服务 2.1.下载Istio安装包 2.2.查看Istio可用的配置列表 2.3.展示Istio配置档的配置信息 2.4.查看Istio在k8s集群部署使用的YAML文件内容 1.使用sealos部署快速部署K8S集群 1.1.基本环境配置 1.设置主机名 hostnamectl set-hostname k8s-master hostnamectl set-hos

  • Spring之底层架构核心概念Environment及用法详解

    目录 1.Environment作用 2.用法 2.1 systemEnvironment 和 systemProperties 2.2 MutablePropertySources 3.实际用法 4.总结 1.Environment作用 Environment:获取环境变量 2.用法 2.1 systemEnvironment 和 systemProperties public static void main(String[] args) { AnnotationConfigApplicat

  • vuex的核心概念和基本使用详解

    目录 介绍 开始 安装 ①直接下载方式 ②CND方式 ③NPM方式 ④Yarn方式 NPM方式安装的使用方式 store概念及使用 概念: 定义 使用 mutations概念及使用 概念: 使用: 定义 使用 action概念及使用 概念: 定义 使用 getters概念及使用 概念: 定义 使用 总结 介绍 Vuex是实现组件全局状态(数据)管理的一种机制,可以方便的实现组件之间的数据共享 开始 安装 ①直接下载方式 创建一个 vuex.js 文件 将https://unpkg.com/vue

  • 计算机程序设计并行计算概念及定义全面详解

    目录 1 摘要 2 概述 2.1 什么是并行计算? 2.2 为什么要并行计算? 2.3 谁都在使用并行计算? 科学界和工程界: 工业界和商业界: 全球应用: 3 概念和术语 3.1 冯诺依曼体系结构 3.2 弗林的经典分类 3.3 一些常见的并行计算术语 3.4 并行程序的缺陷和代价 复杂性: 可移植性: 资源需求: 可扩展性: 4 并行计算机的内存架构 4.1 共享内存 统一内存存取(Uniform Memory Access): 非统一内存存取(Non-Uniform Memory Acce

  • Spring AOP的概念与实现过程详解

    目录 Aop 实现aop方式一 实现aop方式二 注解实现aop Aop 什么是Aop? AOP就是面向切面编程,通过预编译方式以及运行期间的动态代理技术来实现程序的统一维护功能. 什么是切面,我理解的切面就是两个方法之间,两个对象之间,两个模块之间就是一个切面.假设在两个模块之间需要共同执行一系列操作,并且最后将这一系列操作注入到两个模块之间的指定位置.此时这一系列操作就是切面,注入这些操作的位置称之为切点. 举例:公司员工上班 A员工上班需要在前台进行打卡,同样的B员工…其他员工都需要在前台

  • 微信小程序:数据存储、传值、取值详解

    小程序界面传值 父级界面:A界面 子级界面:B界面 一.url传值 详细的配置参数可以查看组件导航:navigator,这里不再做过多的解释. 1. 正向传值:A界面 –>B界面 用 navigator标签或 wx.navigator传值,A界面向B界面传id值 A界面获取id值传向B界面如果需要传多个参数, 用 & 链接即可 // 方法一:navigator标签传值 <navigator url="/page/index/index?id=110" >传值&

  • php安全攻防利用文件上传漏洞与绕过技巧详解

    目录 前言 文件上传漏洞的一些场景 场景一:前端js代码白名单判断.jpg|.png|.gif后缀 场景二:后端PHP代码检查Content-type字段 场景三:代码黑名单判断.asp|.aspx|.php|.jsp后缀 场景四:代码扩大黑名单判断 绕过方式--htaccsess: 绕过方式--大小写绕过: 场景五:一些复合判断 空格.点绕过(windows) ::$DATA绕过(windows) 双写绕过 %00截断 %0a绕过 图片马绕过 二次渲染绕过 条件竞争 /.绕过 前言 文件上传漏

  • Python文件的应用之序列化与反序列化详解

    目录 初识序列化与反序列化 什么是序列化? 可序列化的数据类型 Python 中的json dumps() 与 loads() 函数 可序列化数据类型演示案例 bool .None 类型的序列化与反序列化 Python 中的pickle dumps() 与 loads() 函数 pickle模块的序列化与反序列化练习 json 模块 - 序列化小实战 前面章节我们学些了文件对象的创建.写入与读取,并且针对 .py 文件 与 .txt 文件进行了有针对性的小练习. 通过前面的学习我们知道,文件对象

随机推荐