6.Ceph 基础篇 - CephFS 文件系统
CephFS 文件系统
官网地址:https://docs.ceph.com/en/latest/cephfs/
概念
The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store, RADOS. CephFS endeavors to provide a state-of-the-art, multi-use, highly available, and performant file store for a variety of applications, including traditional use-cases like shared home directories, HPC scratch space, and distributed workflow shared storage.
Ceph 文件系统或 CephFS 是一个兼容 POSIX 的文件系统,它构建在 Ceph 的分布式对象存储 RADOS 之上。CephFS 致力于为各种应用程序提供最新,多用途,高可用性和高性能的文件存储,包括传统用例(如共享主目录,HPC 暂存空间和分布式工作流共享存储)。
CephFS achieves these goals through the use of some novel architectural choices. Notably, file metadata is stored in a separate RADOS pool from file data and served via a resizable cluster of Metadata Servers, or MDS, which may scale to support higher throughput metadata workloads. Clients of the file system have direct access to RADOS for reading and writing file data blocks. For this reason, workloads may linearly scale with the size of the underlying RADOS object store; that is, there is no gateway or broker mediating data I/O for clients.
CephFS 实现这些目标,它是通过使用一些新颖的架构选择。 尤其是,文件元数据与文件数据存储在单独的 RADOS 池中(从数据中分离元数据),并通过可调整大小的元数据服务器或 MDS 集群提供服务,该集群可扩展以支持更高吞吐量的元数据工作负载。文件系统的客户端可以直接访问 RADOS 来读写文件数据块。因此,工作负载可能会随着基础 RADOS 对象存储的大小线性扩展。也就是说,没有网关或代理为客户端中介数据I / O。
Access to data is coordinated through the cluster of MDS which serve as authorities for the state of the distributed metadata cache cooperatively maintained by clients and MDS. Mutations to metadata are aggregated by each MDS into a series of efficient writes to a journal on RADOS; no metadata state is stored locally by the MDS. This model allows for coherent and rapid collaboration between clients within the context of a POSIX file system.
通过集群中 MDS 协调对数据的访问,该集群充当由客户端和 MDS 协作维护的分布式元数据缓存状态的授权机构。每个 MDS 都会将对元数据的突变汇总为对 RADOS 上日记的一系列有效写入。MDS 不会在本地存储任何元数据状态。此模型允许在 POSIX 文件系统的上下文中客户端之间进行连贯且快速的协作。

MDS:即 Metadata Servers,它主要存储的是文件的元数据信息,为了高可靠,通常MDS会部署一个集群,一个 Active,多个 Standby。它是如何保证高可靠性呢?它是把文件的元数据信息通过日志的形式写在 Metadata Pool 里面去;MDS 之间会对元数据信息进行交换,一个主的 Active MDS 宕机了,会有另外的 Standby MAD 来接管它,并且变为 Active MDS,因为数据都是写到 Metadata Pool 里面的,所以刚刚变化 Active MDS 拥有整个集群的元数据信息。
CephFS 客户端是直接向 Data Pool 池里面写数据的,Data Pool 与 Metadata Pool 都是直接构建在 RADOS 上面。
CephFS is the subject of numerous academic papers for its novel designs and contributions to file system research. It is the oldest storage interface in Ceph and was once the primary use-case for RADOS. Now it is joined by two other storage interfaces to form a modern unified storage system: RBD (Ceph Block Devices) and RGW (Ceph Object Storage Gateway).
CephFS 成为很多学术论文的主题,因其新颖的设计和对文件系统的研究贡献,它是最老的存储接口在Ceph集群中,并且还是曾经 RADOS 的主要用例。 现在,它与另外两个存储接口结合在一起,形成了一个现代化的统一存储系统:RBD(Ceph块设备)和RGW(Ceph对象存储网关)。
功能
- POSIX-compliant semantics 兼容 POSIX 语法
- Separates metadata from data 从数据中分离元数据
- Dynamic rebalancing 动态再平衡
- Subdirectory snapshots 子目录快照
- Configurable striping 可配置条带化
- Kernel driver support 内核驱动程序支持
- FUSE support FUSE 支持
- NFS/CIFS deployable 可部署NFS / CIFS
- Use with Hadoop (replace HDFS) 与Hadoop一起使用(替换HDFS)
CephFS工作模型
MDS是CephFS文件系统的唯一入口,MDS进程挂掉后,CephFS无法使用,所以MDS需要做冗余,所以我们部署多个MDS进程对元数据分区进行冗余,这几个MDS都是活跃的,所以叫做多主MDS冗余,其中有一个负责根文件系统的MDS,其它MDS只负责一个子树的解析,一般热点子树就会动态分裂,动态子树分区机制;这样一个每一个活动MDS都有可能成为单点,所以我们需要为其提供冗余或者公共冗余都可以;
MDS 集群创建
部署 mds
[root@ceph-node01 ceph-deploy]# ceph-deploy mds create ceph-node01 ceph-node02 ceph-node03
状态查看
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 24h)
mgr: ceph-node01(active, since 11d), standbys: ceph-node03, ceph-node02
mds: 3 up:standby
osd: 7 osds: 7 up (since 24h), 7 in (since 5d)
rgw: 2 daemons active (ceph-node01, ceph-node02)
task status:
data:
pools: 7 pools, 224 pgs
objects: 2.82k objects, 9.4 GiB
usage: 35 GiB used, 765 GiB / 800 GiB avail
pgs: 224 active+clean
[root@ceph-node01 ceph-deploy]#
mds: 3 up:standby ,三个 mds 都处于 standby 状态,这是因为我们还没有创建 mds 相关的文件系统。
[root@ceph-node01 ceph-deploy]# ceph mds stat
3 up:standby
[root@ceph-node01 ceph-deploy]# ceph fs ls
No filesystems enabled
[root@ceph-node01 ceph-deploy]#
创建文件系统
在使用 CephFS 文件系统中,metadata 是比较耗费资源的,它需要访问资源的速度是非常快的,最好使用 SSD 的 OSD 进行 Pool 池进行构建。
# 1. 创建元数据使用的 pool 池
[root@ceph-node01 ceph-deploy]# ceph osd pool create cephfs_metadata 16 16
pool 'cephfs_metadata' created
# 2. 创建数据使用的 pool 池
[root@ceph-node01 ceph-deploy]# ceph osd pool create cephfs_data 16 16
pool 'cephfs_data' created
# 3. 创建文件系统,关联元数据与数据
[root@ceph-node01 ceph-deploy]# ceph fs new cephfs-demo cephfs_metadata cephfs_data
new fs with metadata pool 9 and data pool 10
# 4. 查看fs文件系统
[root@ceph-node01 ceph-deploy]# ceph fs ls
name: cephfs-demo, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
# 5. 查看mds 状态
[root@ceph-node01 ceph-deploy]# ceph mds stat
cephfs-demo:1 {0=ceph-node01=up:active} 2 up:standby
# 6. 查看刚才创建的pool池
[root@ceph-node01 ceph-deploy]# ceph osd lspools
。。。
9 cephfs_metadata
10 cephfs_data
# 7. 查看集群状态
[root@ceph-node01 ceph-deploy]# ceph -s
cluster:
id: cc10b0cb-476f-420c-b1d6-e48c1dc929af
health: HEALTH_OK
services:
mon: 3 daemons, quorum ceph-node01,ceph-node02,ceph-node03 (age 24h)
mgr: ceph-node01(active, since 11d), standbys: ceph-node03, ceph-node02
mds: cephfs-demo:1 {0=ceph-node01=up:active} 2 up:standby
osd: 7 osds: 7 up (since 24h), 7 in (since 6d)
rgw: 2 daemons active (ceph-node01, ceph-node02)
task status:
scrub status:
mds.ceph-node01: idle
data:
pools: 9 pools, 256 pgs
objects: 2.84k objects, 9.4 GiB
usage: 35 GiB used, 765 GiB / 800 GiB avail
pgs: 256 active+clean
[root@ceph-node01 ceph-deploy]#
mds: cephfs-demo:1 {0=ceph-node01=up:active} 2 up:standby 目前ceph-node01是 active,其它的两个是 standby。
[root@ceph-node01 ~]# ceph fs status cephfs-demo
cephfs-demo - 2 clients
===========
+------+--------+-------------+---------------+-------+-------+
| Rank | State | MDS | Activity | dns | inos |
+------+--------+-------------+---------------+-------+-------+
| 0 | active | ceph-node02 | Reqs: 0 /s | 110 | 113 |
+------+--------+-------------+---------------+-------+-------+
+-----------------+----------+-------+-------+
| Pool | type | used | avail |
+-----------------+----------+-------+-------+
| cephfs_metadata | metadata | 500k | 112G |
| cephfs_data | data | 9331 | 112G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
| ceph-node03 |
| ceph-node01 |
+-------------+
MDS version: ceph version 14.2.11 (f7fdb2f52131f54b891a2ec99d8205561242cdaf) nautilus (stable)
[root@ceph-node01 ~]#
CephFS 文件系统使用
内核级别的挂载使用
[root@ceph-node01 ~]# rpm -qf /usr/sbin/mount.ceph
ceph-common-14.2.11-0.el7.x86_64
[root@ceph-node01 ~]#
确认这个命令行工具已经安装。通过下面的命令进行挂载,这样即可挂载成功;
[root@ceph-node01 ~]# mkdir -p /mnt/cephfs
[root@ceph-node01 ~]# mount -t ceph 100.73.18.152:6789:/ /mnt/cephfs/ -o name=admin # 这个地址是ceph-node1主机的ip
[root@ceph-node01 ~]# df -h|grep mnt
/dev/rbd0 20G 1.1G 18G 6% /mnt/rbd-demo
100.73.18.152:6789:/ 800G 36G 765G 5% /mnt/cephfs
[root@ceph-node01 ~]#
[root@ceph-node01 cephfs]# echo `date` >>aa
[root@ceph-node01 cephfs]# cat aa
2020年 10月 21日 星期三 09:42:53 EDT
[root@ceph-node01 cephfs]# lsmod |grep ceph
ceph 335973 1
libceph 282661 2 rbd,ceph
dns_resolver 13140 1 libceph
libcrc32c 12644 4 xfs,ip_vs,libceph,nf_conntrack
[root@ceph-node01 cephfs]#
使用的话,和正常文件系统是一样使用即可,我们mount后,会自动加载内核模块,这样性能很高,但有些情况下不支持内核空间挂载,需要在用户空间中进行挂载,下面介绍这种情况 。
用户空间挂载
[root@ceph-node01 ~]# yum -y install ceph-fuse
需要安装ceph-fuse客户端挂载工具;
[root@ceph-node01 ~]# mkdir -p /mnt/ceph-fuse/
[root@ceph-node01 ~]# ceph-fuse -n client.admin -m 100.73.18.153:6789,100.73.18.128:6789 /mnt/ceph-fuse/ # 这俩地址是ceph-node和ceph-node2主机的ip
ceph-fuse[403201]: starting ceph client2020-10-21 09:48:52.938 7fb92e4d4f80 -1 init, newargv = 0x561fdb9f8ec0 newargc=9
ceph-fuse[403201]: starting fuse
[root@ceph-node01 ~]# cd /mnt/ceph-fuse/
[root@ceph-node01 ceph-fuse]# ls
aa
[root@ceph-node01 ceph-fuse]# cat aa
2020年 10月 21日 星期三 09:42:53 EDT
[root@ceph-node01 ceph-fuse]# echo `date` >>bb
[root@ceph-node01 ceph-fuse]# cd ../cephfs/
[root@ceph-node01 cephfs]# ls
caa bb
[root@ceph-node01 cephfs]# cat bb
2020年 10月 21日 星期三 09:49:23 EDT
[root@ceph-node01 cephfs]#
总结
客户端挂载CephFS有两种形式,内核文件系统:libcephfs,用户空间文件系统(FUSE):libcephfs,要想在RADOS Cluster使用CephFS 必须包括以下几步:
1. 至少有一个节点运行ceph-mds 守护进程;
2. 分别创建元数据和数据存储池;
3. 激活CephFS 文件系统,ceph fs new <name> metadata-pool-name data-pool-name;
4. 使用ceph fs status <name> 去查看状态信息,也可以使用ceph mds stat 查看mds状态;
基于内核文件系统挂载:(需要key文件)
5. 通常需要使用指定的用户访问, 我们上面实验中,都是使用的ceph.admin,这里总结下,使用普通用户的方式:ceph auth get-or-create client.fsclient mon 'allow r' mds 'allow rw' osd 'allow rwx pool=cephfs_data' -o ceph.client.fsclient.keyring
6. 生成普通用户的key信息,并copy到客户端的/etc/ceph/目录,注意客户端需要安装ceph-common命令,才可能挂载cephfs文件系统。
ceph auth print-key client.fsclient >/etc/ceph/fsclient.key
7. 客户端挂载 mount -t ceph ceph-node01:6789,ceph-node02:6789:/ /mnt/kube2/ -o name=fsclient,secretfile=/etc/ceph/fsclient.key,通过stat -f /mnt/kube2查看挂载信息;
8. 还可以把挂载信息写到/etc/fatab文件中如下:
ceph-node01:6789,ceph-node02:6789:/ /mnt/kube2/ ceph name=fsclient,secretfile=/etc/ceph/fsclient.key,_netdev,noatime 0 0
_netdev 告诉mount命令,挂载多久没有挂载成功,自动跳过,不需要等待挂载成功才启动,如果ceph集群不在线的时候,不加此选项,操作系统启动时就会卡住;
noatime:不实时更新时间戳选项;
此时使用mount -a 即可加载/etc/fatab文件,自动挂载,使用mount命令查看,使用umount 卸载.
基于用户空间挂载:(需要用keyring文件)
9. 客户端需要安装ceph-fuse,ceph-common命令;
10. 一样需要提供认证账号,同上;需要把keyring密钥环文件copy过去;
11. ceph-fuse -n client.fsclient -m <IP地址>:6789 /mnt/kube2/ 注意这里我使用域名的形式报错了,可以尝试使用IP地址;
12. 也可以写到/etc/fatab文件中:none /mnt/kube2/ fuse.ceph ceph.id=fsclient,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults 0 0
13. 使用mount -a 挂载,使用umount 卸载。
6.Ceph 基础篇 - CephFS 文件系统的更多相关文章
- 1.Ceph 基础篇 - 存储基础及架构介绍
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485232&idx=1&sn=ff0e93b9 ...
- 8. Ceph 基础篇 - 运维常用操作
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485300&idx=1&sn=aacff9f7 ...
- 3.Ceph 基础篇 - RBD 块存储使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485253&idx=1&sn=24d9b06a ...
- 4.Ceph 基础篇 - 对象存储使用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485256&idx=1&sn=39e07215 ...
- 10.Ceph 基础篇 - RGW 高可用
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485316&idx=1&sn=d3a6be41 ...
- 9. Ceph 基础篇 - Crush Maps
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485302&idx=1&sn=00a3a204 ...
- 5.Ceph 基础篇 - 认证
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485272&idx=1&sn=4b27c357 ...
- 2.Ceph 基础篇 - 集群部署及故障排查
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485243&idx=1&sn=e425c31a ...
- Linux系统文件系统及文件基础篇
学习Linux,重难点在于掌握不同类别的文件系统及其作用.通过对Linux系统的安装,我们首先来了解下Linux系统里各个目录文件夹下的大致功能:主要的目录树的有/./root./home./usr. ...
随机推荐
- 写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!
写了个 Markdown 命令行小工具,希望能提高园友们发文的效率! 前言 笔者使用 Typora 来编写 Markdown 格式的博文,图片采用的是本地相对路径存储(太懒了不想折腾图床). 时间久了 ...
- 异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)
自己讲论文做的异构图神经网络的ppt.再转变成博客有点麻烦,所以做成图片笔记. 论文链接:https://arxiv.org/abs/1903.07293
- CA证书、自颁发证书、自签名证书联系
一.理论基础 ssl:secure socket layer(安全套接层协议)的缩写,通过此协议可以保证两个应用通信的可靠性和保密性.openssl:是ssl协议的实现.提供了对称加密算法.非对称加密 ...
- Linux 任务计划管理
在某个时间点执行一次任务 at工具 作用:用于执行一次性任务,需要指定执行的时间. at工具来源于at软件包. 依赖与atd服务,需要启动才能实现at任务.#通过这个守护进程见监控at的相关内容 #选 ...
- [原创]移远RM500U-CN模组驱动移植
1. 简介 中国广电正式放号了,为了支持广电700MHz的5G基站,需要换用新的5G模组.移远通信的RM500U模组正好可以满足我们的使用要求; 我们选用该模组的原因:双卡单待 支持SIM卡热插拔 支 ...
- WPF 制作 Windows 屏保
分享如何使用WPF 制作 Windows 屏保 WPF 制作 Windows 屏保 作者:驚鏵 原文链接:https://github.com/yanjinhuagood/ScreenSaver 框架 ...
- GTID主从和lamp架构运行原理
目录 GTID主从 GTID概念介绍 GTID工作原理 GTID主从配置 lamp lamp简介 web服务器工作流程 cgi与fastcgi http协议 是什么? lamp架构运行的原理 Apac ...
- 在使用amoeba连接数据库时,报错java.lang.Exception: poolName=slaves, no valid pools
项目场景:Mysql 实现数据库读写分离 搭建3台MySQL服务器,完成主从复制,搭建一台amoeba服务器,完成MySQL的读写分离 问题描述: 问题1. 在服务搭建完毕后,利用客户机连接amoeb ...
- GIL互斥锁与线程
GIL互斥锁与线程 GIL互斥锁验证是否存在 """ 昨天我们买票的程序发现很多个线程可能会取到同一个值进行剪除,证明了数据是并发的,但是我们为了证明在Cpython中证 ...
- Linux 禁止root远程登录解决办法
linux中root用户是超级管理员,可以针对root用户暴力破解密码,这样很不安全,工作中我们一般禁止root用户直接远程登陆,开设一个或多个普通用户,只允许登陆普通用户,如果有需要用root用户, ...