Ceph 文件系统 CephFS 的实战配置,等你来学习 -- <4>
Ceph 文件系统 CephFS 的介绍与配置
CephFs介绍
Ceph File System (CephFS) 是与 POSIX 标准兼容的文件系统, 能够提供对 Ceph 存储集群上的文件访问. Jewel 版本 (10.2.0) 是第一个包含稳定 CephFS 的 Ceph 版本. CephFS 需要至少一个元数据服务器 (Metadata Server - MDS) daemon (ceph-mds) 运行, MDS daemon 管理着与存储在 CephFS 上的文件相关的元数据, 并且协调着对 Ceph 存储系统的访问。
对象存储的成本比起普通的文件存储还是较高,需要购买专门的对象存储软件以及大容量硬盘。如果对数据量要求不是海量,只是为了做文件共享的时候,直接用文件存储的形式好了,性价比高。
CephFS 架构
底层是核心集群所依赖的, 包括:
- OSDs (ceph-osd): CephFS 的数据和元数据就存储在 OSDs 上
- MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元数据
- Mons (ceph-mon): Monitors 管理着集群 Map 的主副本
 Ceph 存储集群的协议层是 Ceph 原生的 librados 库, 与核心集群交互.
CephFS 库层包括 CephFS 库 libcephfs, 工作在 librados 的顶层, 代表着 Ceph 文件系统.最上层是能够访问 Ceph 文件系统的两类客户端.
配置 CephFS MDS
要使用 CephFS, 至少就需要一个 metadata server 进程。可以手动创建一个 MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 来部署 MDS。
登录到ceph-deploy工作目录执行
# ceph-deploy mds create $hostname
部署Ceph文件系统
部署一个 CephFS, 步骤如下:
- 在一个 Mon 节点上创建 Ceph 文件系统.
- 若使用 CephX 认证,需要创建一个访问 CephFS 的客户端
- 挂载 CephFS 到一个专用的节点.
- 以 kernel client 形式挂载 CephFS
- 以 FUSE client 形式挂载 CephFS
 
创建一个 Ceph 文件系统
1、CephFS 需要两个 Pools - cephfs-data 和 cephfs-metadata, 分别存储文件数据和文件元数据
# ceph osd pool create cephfs-data 256 256
# ceph osd pool create cephfs-metadata 64 64
注:一般 metadata pool 可以从相对较少的 PGs 启动, 之后可以根据需要增加 PGs. 因为 metadata pool 存储着 CephFS 文件的元数据, 为了保证安全, 最好有较多的副本数. 为了能有较低的延迟, 可以考虑将 metadata 存储在 SSDs 上.
2、创建一个 CephFS, 名字为 cephfs:
# ceph fs new cephfs cephfs-metadata cephfs-data
3、验证至少有一个 MDS 已经进入 Active 状态
ceph fs status cephfs
4、在 Monitor 上, 创建一个用户,用于访问CephFs
# ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'
[client.cephfs]
	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
5、验证key是否生效
ceph auth get client.cephfs
exported keyring for client.cephfs
[client.cephfs]
	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
	caps mds = "allow rw"
	caps mon = "allow r"
	caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"
6、检查CephFs和mds状态
ceph mds stat
ceph fs ls
ceph fs status
以 kernel client 形式挂载 CephFS
1、创建挂载目录 cephfs
# mkdir /cephfs
2、挂载目录
# mount -t ceph 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/ /cephfs/ -o name=cephfs,secret=AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
# 秘钥就是上面创建用户的key
~]$ df -h
192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/   36G  9.2G   27G  26% /cephfs
3、自动挂载
# echo "mon1:6789,mon2:6789,mon3:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab
4、验证是否挂载成功
# stat -f /cephfs
以 FUSE client 形式挂载 CephFS(失败)
1、安装ceph-common
yum install -y ceph-common
2、安装ceph-fuse
yum install -y ceph-fuse
3、将集群的ceph.conf拷贝到客户端
scp root@192.168.25.224:/etc/ceph/ceph.conf /etc/ceph/
chmod 644 /etc/ceph/ceph.conf
4、使用 ceph-fuse 挂载 CephFS
ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789  /cephfs/
5、验证 CephFS 已经成功挂载
stat -f /cephfs
6、自动挂载
echo "none /cephfs fuse.ceph ceph.id=cephfs[,ceph.conf=/etc/ceph/ceph.conf],_netdev,defaults 0 0"| sudo tee -a /etc/fstab
或
echo "id=cephfs,conf=/etc/ceph/ceph.conf /mnt/ceph2  fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab
7、卸载
fusermount -u /cephfs
MDS主备与主主切换
配置主主模式
MDS配置模式分为以下三种:
- 冷备模式:同一时间,只有一个mds工作,单纯的进程备份。
- 热备模式:同一时间,只有一个mds工作,但除了进程备份,也实时备份元数据,这样可以加快MDS故障切换时间。
- 多主模式:多个MDS同时工作,各自管理自己负责的元数据。
默认情况下,每个cephfs文件系统的MDS都是以冷备模式配置的。有时候为了获取更高的性能,可以启用多个活动的MDS守护进程,也就是多主模式,它们将彼此分担元数据的工作负载。
- 当cephfs的性能出现在MDS上时,就应该配置多个活动的MDS。通常是多个客户机应用程序并行的执行大量元数据操作,并且它们分别有自己单独的工作目录。这种情况下很适合使用多主MDS模式。
- 配置MDS多主模式
 每个cephfs文件系统都有一个max_mds设置,可以理解为它将控制创建多少个主MDS。注意只有当实际的MDS个数大于或等于max_mds设置的值时,mdx_mds设置才会生效。例如,如果只有一个MDS守护进程在运行,并且max_mds被设置为两个,则不会创建第二个主MDS。
[root@cephnode01 ~]# ceph -s
  cluster:
    id:     b6e6146b-c0c0-4058-927a-762b6a98d463
    health: HEALTH_OK
  services:
    mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 20h)
    mgr: cephnode01(active, since 20h), standbys: cephnode02, cephnode03
    mds: cephfs:1 {0=cephnode01=up:active} 2 up:standby
    osd: 9 osds: 9 up (since 19h), 9 in (since 19h)
    rgw: 1 daemon active (cephnode01)
  data:
    pools:   7 pools, 608 pgs
    objects: 262 objects, 5.3 KiB
    usage:   9.1 GiB used, 27 GiB / 36 GiB avail
    pgs:     608 active+clean
  io:
    client:   937 B/s wr, 0 op/s rd, 3 op/s wr
~]$ ceph fs set cephnode01 max_mds 2
1.3、配置备用MDS
即使有多个活动的MDS,如果其中一个MDS出现故障,仍然需要备用守护进程来接管。因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。
但如果你确信你的MDS不会出现故障,可以通过以下设置来通知ceph不需要备用MDS,否则会出现insufficient standby daemons available告警信息:
# ceph fs set <fs> standby_count_wanted 0
还原单主MDS
2.1、设置max_mds
# ceph fs set cephfs max_mds 1
2.2 删除不需要的rank
ceph mds deactivate cephfs:2
Ceph 文件系统 CephFS 的实战配置,等你来学习 -- <4>的更多相关文章
- ceph  文件系统(cephfs) -- 初体验
		一.介绍: ceph MDS 是元数据服务器,只有ceph 文件系统(cephFS)才会需要. cephFS 在RADOS 层之上 提供一个兼容POSIX 的文件系统.他是用MDS 作为守护进程,负责 ... 
- Ceph RBD  CephFS 存储
		Ceph RBD CephFS 存储 环境准备: (这里只做基础测试, ceph-manager , ceph-mon, ceph-osd 一共三台) 10.6.0.140 = ceph-manag ... 
- CEPH集群操作入门--配置
		参考文档:CEPH官网集群操作文档 概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ... 
- 005.Ceph文件系统基础使用
		一 Ceph文件系统 1.1 概述 CephFS也称ceph文件系统,是一个POSIX兼容的分布式文件系统. 实现ceph文件系统的要求: 需要一个已经正常运行的ceph集群: 至少包含一个ceph元 ... 
- ***阿里云ECS实战配置虚拟主机 + Apache 配置虚拟主机三种方式
		阿里云ECS实战配置虚拟主机 买了一台ECS阿里云服务器,性能感觉有点富余,想着可以陪着虚拟主机多一些WWW目录好放一些其他的程序.比如DEMO什么的. 今天研究了下,主要是就是做基于不同域名的虚拟主 ... 
- 2、Vue实战-配置篇-npm配置
		引言: 如果刚开始使用 vue 并不了解 nodejs.npm 相关知识可以看我上一篇的实践,快速入门了解实战知识树. Vue实战-入门篇 上篇反思: 1.新的关注点:开发 vue 模板.如何使用本地 ... 
- 深度学习之PyTorch实战(1)——基础学习及搭建环境
		最近在学习PyTorch框架,买了一本<深度学习之PyTorch实战计算机视觉>,从学习开始,小编会整理学习笔记,并博客记录,希望自己好好学完这本书,最后能熟练应用此框架. PyTorch ... 
- FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
		接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ... 
- MongoDB实战开发 【零基础学习,附完整Asp.net示例】
		MongoDB实战开发 [零基础学习,附完整Asp.net示例] 阅读目录 开始 下载MongoDB,并启动它 在C#使用MongoDB 重构(简化)代码 使用MongoDB的客户端查看数据 使用Mo ... 
随机推荐
- Python 2.X 版本 600行入门基础
			1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ... 
- HDU 1114 完全背包问题
			题意:有一个存钱罐,空罐时的重量是e,满罐时的重量是f,现在有n种硬币,每一种有无限个,现在给出每一种硬币的价值p和重量w,问存钱罐中最少钱,输出最小钱,否则输出... 思路:变形的完全背包问题,只是 ... 
- springboot2动态数据源的绑定
			由于springboot2更新了绑定参数的api,部分springboot1用于绑定的工具类如RelaxedPropertyResolver已经无法在新版本中使用.本文实现参考了https://blo ... 
- 2019-9-9-dotnet-获取本机-IP-地址方法
			title author date CreateTime categories dotnet 获取本机 IP 地址方法 lindexi 2019-09-09 15:56:33 +0800 2019-0 ... 
- 指针版的PStash(用一个void指针数组, 来保存存入元素的地址) 附模板化实现 p321
			由容器PStash的使用者,负责清除容器中的所有指针.所以用户必须记住放到容器中的是什么类型,在取出时,把取出的void指针转换成对应的类型指针,然后 'delete 转换后的对象指针',才能在清除时 ... 
- java多异常处理
			声明异常时尽可能声明具体异常类型,方便更好的处理; 方法声明几个异常就对应有几个catch块; 若多个catch块中的异常出现继承关系,父类异常catch块放在最后; 在catch语句块使用Excep ... 
- 一眼看懂promise async的区别
			// promise方法 let p1 = new Promise((resolve,reject) => { setTimeout(() => { resolve('我是p1') },4 ... 
- [POJ2528]Mayor's posters(离散化+线段树)
			Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 70365 Accepted: 20306 ... 
- 初识Contiv
			Contiv是一个用于跨虚拟机.裸机.公有云或私有云的异构容器部署的开源容器网络架构.作为业界最强大的容器网络架构,Contiv具有2层.3层.overlay和ACI模式,能够与思科基础设施进行本地集 ... 
- Github Pages 无法调用 node_modules 文件夹的解决方案
			今天写一个demo,用npm安装的前端库,然后想在github的pages上展示出来 发布到github后,发现node_modules文件夹下的js无法调用 google解决方案:新增一个名字为.n ... 
