ceph集群cephfs使用详解

一个完整的ceph集群,可以提供块存储、文件系统和对象存储。

本节主要介绍文件系统cephfs功能如何灵活的使用,集群背景:

[cephadmin@yq01-aip-aikefu10.yq01.baidu.com ~]$ ceph -s
cluster:
id: f0a8789e-6d53-44fa-b76d-efa79bbebbcf
health: HEALTH_OK services:
mon: 1 daemons, quorum a (age 24h)
mgr: a(active, since 14h)
mds: cephfs:1 {0=cephfs-a=up:active} 1 up:standby-replay
osd: 1 osds: 1 up (since 24h), 1 in (since 26h)
rgw: 1 daemon active (my.store.a) data:
pools: 10 pools, 200 pgs
objects: 719 objects, 1.3 GiB
usage: 54 GiB used, 804 GiB / 858 GiB avail
pgs: 200 active+clean io:
client: 852 B/s rd, 1 op/s rd, 0 op/s wr

cephfs文件系统介绍

cephfs介绍

cephfs即ceph filesystem,是一个基于ceph集群且兼容POSIX标准的文件共享系统,创建cephfs文件系统时需要在ceph集群中添加mds服务。cephfs支持以内核模块方式加载也支持fuse方式加载。无论是内核模式还是fuse模式,都是通过调用libcephfs库来实现cephfs文件系统的加载。

fuse用户态和kernel内核态两种挂载cephfs的优劣式:

  • fuse 客户端最容易与服务器做到代码级的同步,但是内核客户端的性能通常更好。
  • 这两种客户端不一定会提供一样的功能,如 fuse 客户端可支持客户端强制配额,但内核客户端却不支持。
  • 遇到缺陷或性能问题时,最好试试另一个客户端,以甄别此缺陷是否特定于客户端

mds组件介绍

mds是该服务负责处理POSIX文件系统中的metadata部分,实际的数据部分交由ceph集群中的OSD处理,mds提供了一个带智能缓存层的共享型连续文件系统,可以大大减少 OSD 读写操作频率。

cephfs元数据使用的动态子树分区,把元数据划分名称空间下对应到不同的mds,写入元数据的时候将元数据按照名称保存到不同主mds上,类似于nginx中的缓存目录分层。

cephfs工作流程

  1. 创建cephfs时会指定两个存储池,一个专门来存储元数据,一个专门来存储实际文件;
  2. 客户端在写(读)文件时,首先写(读)mds服务缓存中文件的元数据信息,当然保存在mds的元数据最终还是要落盘到osd pool中的;
  3. mds和rados之间通过journal metadate交互,这个journal是记录文件写入日志的,这个也是存放到OSD当中;
  4. 最终客户端得到元数据信息,获取rados对某个文件的IO操作,实现文件读写。

cephfs状态查看

$ ceph fs status
cephfs - 0 clients
======
+------+----------------+----------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+----------------+----------+---------------+-------+-------+
| 0 | active | cephfs-a | Reqs: 0 /s | 30 | 25 |
| 0-s | standby-replay | cephfs-b | Evts: 0 /s | 24 | 17 |
+------+----------------+----------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 289k | 760G |
| cephfs-data0 | data | 805 | 760G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
+-------------+ $ ceph mds stat
cephfs:1 {0=cephfs-a=up:active} 1 up:standby-replay

cephfs使用演示

cephfs安装步骤已经通过上节部署文档中演示过,此处不再赘述,仅介绍本次演示所涉及到的pool名称:

$ ceph fs ls
name: cephfs, metadata pool: cephfs-metadata, data pools: [cephfs-data0 ] $ ceph osd lspools
cephfs-metadata #用来存放mds数据
cephfs-data0 #用来存放data数据

先通过第一种方法:以内核模块方式挂载(一般都用此种方式)

首先要确认内核模块是否加载

# lsmod | grep ceph
ceph 363016 0
libceph 306750 2 rbd,ceph
dns_resolver 13140 1 libceph
libcrc32c 12644 4 xfs,libceph,nf_nat,nf_conntrack

先创建用来专门挂载的ceph用户

## 创建 client.mfan 用户,并授权可读 MON、可读写mds 和 可读写执行名称cephfs-data0的OSD
$ ceph auth add client.mfan mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs-data0'
added key for client.mfan ## 输出密钥
$ ceph auth get client.mfan -o /etc/ceph/ceph.client.mfan.keyring
exported keyring for client.mfan ## 测试访问集群
$ ceph -s --user mfan
cluster:
id: f0a8789e-6d53-44fa-b76d-efa79bbebbcf
health: HEALTH_OK services:
mon: 1 daemons, quorum a (age 42h)
mgr: a(active, since 33h)
mds: cephfs:1 {0=cephfs-a=up:active} 1 up:standby-replay
osd: 1 osds: 1 up (since 42h), 1 in (since 44h)
rgw: 1 daemon active (my.store.a) data:
pools: 10 pools, 200 pgs
objects: 719 objects, 1.3 GiB
usage: 55 GiB used, 803 GiB / 858 GiB avail
pgs: 200 active+clean io:
client: 852 B/s rd, 1 op/s rd, 0 op/s wr

获取用户名和密钥

$ ceph auth get client.mfan
exported keyring for client.mfan
[client.mfan]
key = AQD600NibhPBJxAAzKeTOcQ17xaPhEdZ8npehg==
caps mds = "allow rw"
caps mon = "allow r"
caps osd = "allow rwx pool=cephfs-data0"

命令行挂载cephfs,有两种方式:

第一种:

## 挂载
# mount -t ceph 10.153.204.13:6789:/ /home/cephfs-data/ -o name=mfan,secret=AQD600NibhPBJxAAzKeTOcQ17xaPhEdZ8npehg==
参数说明:
-o:指定挂载参数
name:认证用户
secret:用户密钥 # df -h | grep 'ceph-data'
10.153.204.13:6789:/ 760G 0 760G 0% /home/cephfs-data

我这里只有一台mon,如果多台mon,可以并写如:10.153.204.13:6789,10.153.204.14:6789,10.153.204.15:6789:/

第二种:

## 创建用户secret文件
# ceph auth get-key client.mfan > /etc/ceph/mvfan.secret ## 使用secret文件挂载
# mount -t ceph 10.153.204.13:6789:/ /home/cephfs-data2/ -o name=mfan,secretfile=/etc/ceph/mvfan.secret

测试读写

## 测试写
# dd if=/dev/zero of=/home/ceph-data/test.dbf bs=8k count=200000 conv=fdatasync
200000+0 records in
200000+0 records out
1638400000 bytes (1.6 GB) copied, 4.93594 s, 332 MB/s ## 测试读
# dd if=/home/ceph-data/test.dbf of=/dev/null bs=4k count=100000000
400000+0 records in
400000+0 records out
1638400000 bytes (1.6 GB) copied, 1.18977 s, 1.4 GB/s

加入fstab中

echo "10.153.204.13:6789:/ /home/ceph-data ceph \
name=mfan,secret=AQD600NibhPBJxAAzKeTOcQ17xaPhEdZ8npehg==,_netdev,noatime 0 0" >> /etc/fstab

_netdev: 文件系统居于需要网络连接的设备上,系统联网时才挂载

noatime: 不更新文件系统的inode存取时间

再通过第二种方法:以fuse方式方式挂载

需要先安装ceph-fuse包

yum install -y ceph-fuse

执行挂载

# ceph-fuse -m 10.153.204.13:6789 /home/cephfs-data
ceph-fuse[9511]: starting ceph client2022-03-30T17:25:00.938+0800 7fc7431f7f80 -1 init, newargv = 0x55d4924a7b60 newargc=9
ceph-fuse[9511]: starting fuse # ps -ef | grep fuse
root 9511 1 0 17:25 pts/1 00:00:00 ceph-fuse -m 10.153.204.13:6789 /home/cephfs-data # df -Th | grep cephfs-data
ceph-fuse fuse.ceph-fuse 759G 2.2G 757G 1% /home/cephfs-data

卸载命令

fusermount -u /home/cephfs-data/

cephfs功能介绍就到此为止了,后续会继续介绍ceph对象存储的具体使用,及mds如何实现双主双备高可用。

CEPH-3:cephfs功能详解的更多相关文章

  1. iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

    使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现   2.纯代 ...

  2. SVN功能详解

    SVN功能详解   TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. ...

  3. 转载]IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本 )

    原文地址:IOS LBS功能详解[0](获取经纬度)[1](获取当前地理位置文本作者:佐佐木小次郎 因为最近项目上要用有关LBS的功能.于是我便做一下预研. 一般说来LBS功能一般分为两块:一块是地理 ...

  4. UIViewController中各方法调用顺序及功能详解

    UIViewController中各方法调用顺序及功能详解 UIViewController中loadView, viewDidLoad, viewWillUnload, viewDidUnload, ...

  5. MySQL的用户密码过期功能详解

    MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...

  6. 【转】 /etc/fstab功能详解

    [转] /etc/fstab功能详解 最近去客户现场时,遇到 了一个关于挂载文件/etc/fstab文件的问题,就写了一下/etc/fstab文件的作用一个文件中各个参数的含义.供大家参考有不正确的地 ...

  7. 在ASP.NET 5应用程序中的跨域请求功能详解

    在ASP.NET 5应用程序中的跨域请求功能详解 浏览器安全阻止了一个网页中向另外一个域提交请求,这个限制叫做同域策咯(same-origin policy),这组织了一个恶意网站从另外一个网站读取敏 ...

  8. .NET ORM框架 SqlSuagr4.0 功能详解与实践【开源】

    SqlSugar 4.0 ORM框架的优势 为了未来能够更好的支持多库分布式的存储,并行计算等功能,将SqlSugar3.x全部重写,现有的架构可以轻松扩展多库. 源码下载: https://gith ...

  9. SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例

    sns社交系统ThinkSNS目前拥有功能:朋友圈(微博).微吧(论坛).频道.积分商城.IM即时聊天.直播.问答.活动.资讯(CMS).商城.广场.找人.搜索.评论.点赞.转发.分享.话题.积分.充 ...

随机推荐

  1. Sencha Cmd 常用命令

    1.获取帮助 sencha help generate app 2.创建应用程序 sencha -sdk e:\ext\ext6 generate app -classic SimpleCMS e:\ ...

  2. 缓冲区(buffer)与缓存(cache) 缓冲:缓解冲击,缓存:临时存储

    缓存与缓冲区 简要概述 缓存(cache):故名思意就是临时存储一下数据的存储器,其他设备可能等下还用的到数据.缓存区可以用来做缓冲区 缓冲区(Buffer):故名意思就是解决设备之间速度不匹配的问题 ...

  3. 计算机网络-IP篇

    目录 IP 基本认识 IP地址 IP 地址的分类 公有 IP 地址与私有 IP 地址 IP 地址与路由控制 IP 分⽚与重组 IPv6 基本认识 IPv4 ⾸部与 IPv6 ⾸部 IP协议 DNS A ...

  4. MySQL第四讲

    昨日内容回顾 表与表之间建关系(外键) """ 表与表之间最多只有四种关系 一对多 多对多 一对一 没有关系 在确定表与表之间的关系的时候记住一句话 换位思考 " ...

  5. 递归——深度优先搜索(DFS)——以滑雪问题为例(自顶而下)

    一.问题:滑雪 问题描述:小明喜欢滑雪,为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.小明想知道在一个区域中最长底滑坡.区域由一个二维数组给出.数组的每 ...

  6. 3. Java基础

    3.Java基础[基于IDEA] 3.1.快捷键 psvm 创建主方法 sout 打印 ctrl+d 复制当前行到下一行 alt+ender 创建局部变量,类: 3.2.注释,标识符,关键字 注释 平 ...

  7. php 23种设计模型 - 桥接模式

    桥接模式(Bridge) 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦. 这种模式涉 ...

  8. LINUX安装 RPM与YUM

    1 Linux软件安装概述 安装程序的方式: 通用二进制格式:直接解压压缩文件,就可以使用.但一定要注意安装平台. 软件包管理器:如RPM. 软件包管理器的前端工具:如YUM. 源代码编译. 1 1. ...

  9. ubuntu 16.04和18.04 忘记登录密码的解决办法

    1:开机按Shift键,出现如下界面.(手速要快,Shift键要按时间久一点)选择第二项 2:按回车键进入如下界面,然后选中有recovery mode的选项(第三项) 3:按e进入如下界面,并找到图 ...

  10. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    摘要 点云是一种重要的几何数据结构类型.由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合.然而,这使数据变得不必要的庞大,并导致问题.在本文中,我们设计了一种新型的直接处 ...