Ceph----CephFS文件系统的使用:详细实践过程实战版

CephFS 介绍

是一个基于 ceph 集群 且兼容 POSIX 标准的文件系统。
创建 cephfs 文件系统时 需要在 ceph 集群中添加 mds 服务,该服务 负责处理 POSIX 文件系统中的 metadata 部分,
实际的数据部分交由 ceph 集群中的 OSD 处理。

cephfs 支持以内核模块方式加载 也支持 fuse(普通用户) 方式加载。无论是内核 模式还是 fuse 模式,
都是通过调用 lib cephfs 库来实现 cephfs 文件 系统的加载,
而 libcephfs 库又调用 librados 库与 ceph 集群进行通 信,从而实现 cephfs 的加载
在这里插入图片描述

实验环境

服务器:153 IP:192.168.121.153 系统:Centos7.9 角色:ceph-deploy,osd
服务器:154 IP:192.168.121.154 系统:Centos7.9 角色:osd
服务器:155 IP:192.168.121.155 系统:Centos7.9 角色:osd
服务器:151 IP:192.168.121.151 系统:Centos7.9 角色:客户端

实验步骤

从MDS的部署开始,ceph的部署我前面的博文有详细介绍过,忘记了的话可以去看看
在cepe-deploy节点执行下面的命令在每个节点部署MDS

[root@server153 ceph-cluster]#  ceph-deploy  mds  create server153 server154 server155

然后查看MDS的服务是否启动

[root@server153 ceph-cluster]# ps axu | grep mds

查看mds节点的状况,如下是3个节点都已启动

[root@server153 ceph-cluster]# ceph mds stat3 up:standby

然后创建两个新的存储池,一个存储数据,一个存储元数据
需要注意一个存储池只能创建一个cephfs

[root@server153 ceph-cluster]# ceph osd pool create cephfs-test 128 128
pool 'cephfs-test' created

但是多个cephfs可以共用一个元数据的 存储池

[root@server153 ceph-cluster]# ceph osd pool create cephfs-metadata 128 128
pool 'cephfs-metadata' created

查看创建的存储池

[root@server153 ceph-cluster]# ceph osd pool ls
device_health_metrics
cephfs-test
cephfs-metadata
[root@server153 ceph-cluster]# ceph df
--- RAW STORAGE ---
CLASS  SIZE    AVAIL   USED     RAW USED  %RAW USED
hdd    60 GiB  57 GiB  276 MiB   3.3 GiB       5.45
TOTAL  60 GiB  57 GiB  276 MiB   3.3 GiB       5.45--- POOLS ---
POOL                   ID  PGS  STORED  OBJECTS  USED  %USED  MAX AVAIL
device_health_metrics   1    1     0 B        0   0 B      0     18 GiB
cephfs-test             6  102     0 B        0   0 B      0     18 GiB
cephfs-metadata         7  117     0 B        0   0 B      0     18 GiB

目前我们只是创建了存储池,文件系统还是空的

[root@server153 ceph-cluster]# ceph  fs  ls
No filesystems enabled

接下来创建文件系统

[root@server153 ceph-cluster]# ceph fs ls
name: testfs, metadata pool: cephfs-metadata, data pools: [cephfs-test 

Cephfs 有 用户态 fuse 和 内核态 mount 两种使用方式:
接下来两种都实验一遍

用户态fush

在测试服务器客户端151先下载 fuse

[root@server151 ~]# yum install -y ceph-fuse

下载完毕就可以直接挂载使用了

[root@server151 ~]# df | grep /mnt
[root@server151 ~]#  ceph-fuse  -m 192.168.121.153:6789,192.168.121.154:6789,192.168.121.155:6789    /mnt 
ceph-fuse[2023-11-22T20:04:20.596+0800 7fe5152aaf40 -1 init, newargv = 0x561047ec4920 newargc=9
107213]: starting ceph client
ceph-fuse[107213]: starting fuse
[root@server151 ~]# df | grep /mnt
ceph-fuse                   18788352       0  18788352   0% /mnt

在这里插入图片描述
然后再用服务器155来挂载相同的目录
先在服务器151往挂载的目录中添加点数据

[root@server151 ~]# echo aaaaaaa > /mnt/test.txt
[root@server151 ~]# ls /mnt/
test.txt

在这里插入图片描述
在这里插入图片描述
可以看到一开始没有挂载的时候/mnt目录下是没有文件的,挂载上去以后就看到了测试的文件
然后也添加一个文件数据

[root@server155 ~]# ls /mnt/
test.txt
[root@server155 ~]# echo bbbbbbbb > /mnt/bbbbbb.test

去刚才挂载的151服务器查看
在这里插入图片描述

由结果可以看出,cephfs是可以被多台服务器挂载同一个目录和读写的

内核态挂载

现在到内核态的挂载
在需要挂载的服务器安装 ceph-common 包

[root@server151 ~]# yum  install ceph-common

然后在服务端创建客户端的认证,注意是在服务端

ceph auth get-or-create client.cephfs-user \mon 'allow r' osd 'allow rwx pool=cephfs_data' mds 'allow'  \-o /etc/ceph/ceph.client.cephfs-user.keyring

在这里插入图片描述
然后查看创建的身份认证信息

[root@server153 ceph-cluster]# ceph auth  list  | grep -A 5 cephfs-user
installed auth entries:client.cephfs-userkey: AQDK1l1lhM2kCBAAjVDVQJO022R3cBUMeVrFUQ==caps: [mds] allowcaps: [mon] allow rcaps: [osd] allow rwx pool=cephfs_data

将认证用户的key输出为文件,并将配置文件及key文件复制到客户端

[root@server153 ceph-cluster]# ceph auth print-key client.cephfs-user -o /etc/ceph/cephfs-user.key
[root@server153 ceph-cluster]# scp  /etc/ceph/ceph.conf   /etc/ceph/cephfs-user.key   192.168.121.151:/etc/ceph/
root@192.168.121.151's password: 
ceph.conf                             100%  292   316.0KB/s   00:00    
cephfs-user.key                       100%   40    54.3KB/s   00:00 

然后就去客户端挂载测试

[root@server151 ~]# mkdir /mounttest
[root@server151 ~]# mount -t ceph 192.168.121.153:6789,192.168.121.154:6789,192.168.121.155:6789:/     /mounttest  -o name=cephfs-user,secretfile=/etc/ceph/cephfs-user.key
[root@server151 ~]# ls /mounttest/
bbbbbb.test  test.txt

这里我先创建了一个测试目录,然后挂载到该目录,可以看到刚才我们添加的测试数据都在
我们只是挂载方式不同,但是文件系统是不变的
cephfs的时候大概就是这样子,希望对大家有帮助

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/221357.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode198.打家劫舍

打家劫舍和背包问题一样是一道非常经典的动态规划问题,只要做过几道动态规划的题,这道题简直就非常容易做出来。我应该花了10来分钟左右就写出来了,动态规划问题最重要的就是建立状态转移方程,就是说如何从上一个状态转移到下一个…

在线知识库管理平台zyplayer-doc

什么是 zyplayer-doc ? zyplayer-doc 是一款适合团队和个人私有化部署使用的知识库、笔记、WIKI 文档管理工具,同时还包含数据库管理、Api 接口管理等模块。 个人用户可免费下载部署使用,部署后也可以购买商业授权进行激活。 安装 建数据库…

group by

引入 日常开发中,我们经常会使用到group by。你是否知道group by的工作原理呢?group by和having有什么区别呢?group by的优化思路是怎样的呢?使用group by有哪些需要注意的问题呢? 使用group by的简单例子group by 工…

【腾讯云云上实验室】用向量数据库在金融信用数据库分析中的实战运用

一、前言 这篇文章将带领读者探索数据库的多样化解决方案及其演进历程,特别关注向量数据库的重要性和在实际项目中的应用。 通过深入剖析腾讯云向量数据库及其在金融信用数据库分析中的实战运用,为读者提供全面而实用的指南,帮助他们理解、…

解密 sqli靶场第一关:一步一步学习 SQL 注入技术

目录 一、判断是否存在注入点 二、构造类似?id1 --的语句 三、判断数据表中的列数 四、使用union联合查询 五、使用group_concat()函数 六、爆出数据库中的表名 七、爆出users表中的列名 八、爆出users表中的数据 🌈嗨!我是Filotimo__🌈。很…

阿里云MQTT: 子设备上线流程

0. 背景 阿里云网关子设备上平台的资料很少。有些厂家直接配置每个子设备的DeviceSecret到网关里,显然太麻烦了!我经过阅读阿里文档,发现有些简化的方法,更便于客户使用,因此分享给大家。 1. 主要信息片段 子设备 $…

共享模型之无锁

目录 无锁实现线程安全 无锁与synchronized效率对比 原子整数 原子引用类型 ABA问题 原子数组 字段更新器 原子累加器LongAdder LongAdder源码分析 Unsafe cas修改对象属性值 案例 对于银行取钱来说,需要保证线程安全,一个1w的账户由1k个线程…

Spring Boot 改版如何解决?使用阿里云创建项目、使用IDEA进行创建

接上次博客:JavaEE进阶(2)SpringBoot 快速上手(环境准备、Maven:核心功能,Maven仓库、第⼀个SpringBoot程序:Spring介绍,Spring Boot介绍、创建项目)-CSDN博客 目录 使…

单片机学习5——外部中断程序

#include<reg52.h>unsigned char a; sbit lcden P3^4;void main() {lcden0;EA1;EX01;IT00;a0xF0; //点亮4位小灯while(1){P1a;} }//中断服务程序 void ext0() interrupt 0 // 0 表示的是外部中断源0 {a0x0f; // 中断处理完&#xff0c;再返回主…

论文阅读:C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range SLAM

前言 论文全程为C2VIR-SLAM: Centralized Collaborative Visual-Inertial-Range Simultaneous Localization and Mapping&#xff0c;是发表在MDPI drones&#xff08;二区&#xff0c;IF4.8&#xff09;上的一篇论文。这篇文章使用单目相机、惯性测量单元( IMU )和UWB设备作为…

JVM基础篇:垃圾回收

1.前言 1.1C/C的内存管理 在C/C这类没有自动垃圾回收机制的语言中&#xff0c;一个对象如果不再使用&#xff0c;需要手动释放&#xff0c;否则就会出现内存泄漏。我们称这种释放对象的过程为垃圾回收&#xff0c;而需要程序员编写代码进行回收的方式为手动回收。内存泄漏指的…

数据库基础教程之序列自增设置(三)

点击public来选择一个模式。 选择其他-》序列。 选择新建序列。 设置序列参数&#xff08;最大值不超过2的63次方-1&#xff09;。 点击保存。 刷新序列列表&#xff0c;可以看见新建序列。 设置主键自增 打开设计表-》选中字段-》默认值设置为&#xff1a;nextval(‘log_text’…