参考文档:

  1. CEPH FILESYSTEM:http://docs.ceph.com/docs/master/cephfs/
  2. CephFS best practices:http://docs.ceph.com/docs/master/cephfs/best-practices/
  3. MDS STAT:http://docs.ceph.com/docs/master/cephfs/mds-states/
  4. Mount CephFS with the Kernel Driver:http://docs.ceph.com/docs/master/cephfs/kernel/
  5. Mount CephFS using FUSE:http://docs.ceph.com/docs/master/cephfs/fuse/
  6. Ceph PGs per Pool Calculator:https://ceph.com/pgcalc/
  7. CEPH pg/pgs:https://www.xiaobo.li/?p=1004

一.环境准备

1. CephFS

2. 环境

《CEPH LIO iSCSI Gateway》中的环境为基础,即:

Hostname

IP

Service

Remark

ceph01

public:172.30.200.57

cluster:192.30.200.57

 

1. centos7.5 with kernel v4.18.7-1;

2. ceph-13.2.1 mimic (stable),已部署

3. ntp已部署;

4. 禁用selinux,firewalld或iptables。

ceph02

public:172.30.200.58

cluster:192.30.200.58

 

ceph03

public:172.30.200.59

cluster:192.30.200.59

 

ceph-client

172.30.200.50

 

ceph-fuse-12.2.8-0(ceph yum)

二.部署CephFS

1. 创建ceph mds

Ceph元数据服务器(MetaDataServer,MDS)主要用于管理文件系统的命名空间。Ceph集群中的元数据与数据均存储在对象存储集群中,MDS类似于元数据的代理缓存服务器(不负责存储元数据),但为了实现扩展性,两者是分开独立管理

Ceph MDS不是一个必需角色,只在使用CephFS的时需要,CephFS至少需要1台MDS,最佳实践中也建议部署1台,但可以部署多台,默认是主备关系。

# 通过部署服务器部署,格式:ceph-deploy mds create HOST1[:OSD-DAEMON-NAME];
# 后期增加MDS也可通过此方式
[root@ceph01 ~]# su - cephde
[cephde@ceph01 ~]$ cd cephcluster/
[cephde@ceph01 cephcluster]$ ceph-deploy mds create ceph01 ceph02

# 查看mds守护服务,ceph02节点同理;
# 删除mds步骤:首先停止mds守护服务;再通过”ceph mds fail X”删除
[cephde@ceph01 cephcluster]$ sudo systemctl status ceph-mds@ceph01

2. 创建pool

# 1个Cephfs至少需要两个pool,MDS与数据独立管理;
# 粗略的 <pg_num> 的设定规则:
# 若少于 5 个 OSD, 设置 pg_num 为 128;
# 5~10 个 OSD,设置 pg_num 为 512;
# 10~50 个 OSD,设置 pg_num 为 4096;
# 除了<pg_num> ,还有一个可选参数 <pgp_num> ,可不设置,pgp是为了管理placement而存在的专门的pg,其pg的数量应该保持一致;
# pg数只能增加,无法减少;增加pg_num后必须同时增减pgp_num
[root@ceph01 ~]# ceph osd pool create metadata 64
[root@ceph01 ~]# ceph osd pool create data 64

3. 创建CephFS

# 格式:ceph fs new CEPHFS-NAME METADATA-POOL DATA-POOL;
# 删除cephfs需要提前删除mds:ceph fs rm CEPHFS-NAME --yes-i-really-mean-it;
# 查看:ceph fs ls
[root@ceph01 ~]# ceph fs new cephfs metadata data

# 同步观察ceph集群名为cephfs的文件系统状态变化;
# 部署在ceph02节点的MDS被确认为主MDS,被分配”rank 0”,处于active状态
[root@ceph02 ~]# ceph -w

# 或:ceph mds stat;
# 可用的文件系统一定有1个mds处于”up:active”状态;在创建cephfs前,通过”ceph mds stat”可见mds状态处于”up:standby”
[root@ceph01 ~]# ceph -s

三.挂载CephFS

在ceph-client节点挂载cephfs,CephFS有两种挂载方式:

  1. 通过内核模块挂载,性能相对更佳;
  2. 通过FUSE(Filesystem in Userspace,用户空间文件系统)挂载,fuse客户端基本可与服务器同步。

1. 通过内核驱动挂载CephFS

通过内核挂载cephfs,对内核版本有一定要求,最佳实践中并未给出最低版本的要求,只是建议如果从Ceph 10.x (Jewel) 算起,最好用 4.x 以上的内核,但v3.x基本支持

1)挂载

# 创建挂载点
[root@ceph-client ~]# mkdir -p /cephfs # 注意MDS的状态:up:active
# 挂载格式:mount -t ceph Mon-IP:6789:/ /MOUNTPOINT [-o name=amdin,secret=Keyring\secretfile=/Path/to/Secretfile];
# 默认采用ceph-deploy部署ceph集群是开启了cephx认证,需要挂载secret-keyring,即集群mon节点/etc/ceph/ceph.client.admin.keyring文件中的”key”值,采用secretfile可不用暴露keyring,但有1个bug(https://bugzilla.redhat.com/show_bug.cgi?id=1030402),始终报错:libceph: bad option at 'secretfile=/etc/ceph/admin.secret';
# 如果ceph集群含多个文件系统(默认只能创建1个文件系统,多文件系统属于实验性质,需打开开关),挂载时需要指定,参数:-o mds_namespace=CEPHFS-Name,
[root@ceph-client ~]# mount -t ceph 172.30.200.57:6789:/ /cephfs -o name=admin,secret=AQBzx5hbtt2iJxAAE4dsque5hpNzWOEYzGNzBw==

2)查看挂载情况

# 3副本环境,ceph集群450GB的总容量合并为140GB左右
[root@ceph-client ~]# df -Th

# 也可通过”dmesg | tail”观察挂载情况
[root@ceph-client ~]# dmesg | tail

3)设置开机启动挂载

# filesystem列设置为”ceph”,filesystem parameters列设置挂载user/key,时间等;
# noatime:禁止更新文件与目录的inode访问时间,以获得更快的访问速度;
# _netdev:标识文件系统位于网络上,防止网络启动前挂载
[root@ceph-client ~]# vim /etc/fstab
# cephfs
172.30.200.57:6789:/ /cephfs ceph name=admin,secret=AQBzx5hbtt2iJxAAE4dsque5hpNzWOEYzGNzBw==,noatime,_netdev 0 0

2. 通过FUSE挂载CephFS

1)准备

# 安装ceph-fuse客户端,需要提前设置ceph yum源
[root@ceph-client ~]# yum install ceph-fuse -y # 客户端挂载cephfs时,默认在/etc/ceph目录下读取需要的文件,即ceph集群mon节点的ceph.conf文件与ceph.client.admin.keyring文件
[root@ceph-client ~]# mkdir -p /etc/ceph
[root@ceph-client ~]# scp root@172.30.200.57:/etc/ceph/ceph.c* /etc/ceph/ # 卸载通过内核挂载的cephfs
[root@ceph-client ~]# umount /cephfs/

2)挂载

# 格式1:ceph-fuse /MOUNTPOINT,ceph-fuse读取ceph.conf文件,选择可用的mon节点挂载,此方式具备冗余性(依赖mon节点的冗余);
# 格式2:ceph-fuse [-k <keyring_path>/ceph.client.admin.keyring]-m Mon-IP:6789 /MOUNTPOINT,挂载效果同格式1;
# 格式3:首先启动ceph-fuse.target服务:systemctl start ceph-fuse.target;再(依赖前者)启动挂载:systemctl start ceph-fuse@/MOUNTPOINT.service,unit文件为/usr/lib/systemd/system/ceph-fuse@.service,需要根据挂载点启动服务,挂载效果与前两种方式相同
[root@ceph-client ~]# ceph-fuse /cephfs

3)查看挂载情况

# 命令”dmesg | tail”也可查看;
# 通过格式1挂载,filesystem源是ceph-fuse,并未绑定特定mon节点,文件系统是fuse.ceph-fuse
[root@ceph-client ~]# df -Th

4)设置开机启动挂载

# device列设置“ceph-fuse”或“id=admin”都可以;
# filesystem列设置为”fuse.ceph”,注意不是” fuse.ceph-fuse”;
# filesystem parameters列设置挂载时间
[root@ceph-client ~]# vim /etc/fstab
# cephfs
ceph-fuse /cephfs fuse.ceph noatime,_netdev 0 0

CEPH FILESYSTEM的更多相关文章

  1. 理解 OpenStack + Ceph (2):Ceph 的物理和逻辑结构 [Ceph Architecture]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  2. centos6.4 ceph安装部署之cephFS

    1,ceph fileSystem

  3. centos6.4 ceph安装部署之ceph block device

    1,prelight/preface ceph storage clusterceph block deviceceph filesystemceph object storage 此篇记录ceph ...

  4. ceph理论及部署配置实践

    prefaces: ceph installation(quick)1,preflight(ins ceph-deploy repo tools)2,ceph storage cluster quic ...

  5. ceph install

    Ceph : performance, reliability and scalability storage solution Contents 1 Introduction 1.1 Testing ...

  6. 分布式存储ceph集群实践

    1.环境规划,三台主机 10.213.14.51/24            10.213.14.52/24       10.213.14.53/24    集群网络 172.140.140.11. ...

  7. Ceph 概述和理论

    1.1 Ceph概述 官网地址:https://docs.ceph.com/docs/master/ 1.Ceph简介 概述:Ceph是可靠的.可扩展的.统一的.分布式的存储系统.同时提供对象存储RA ...

  8. Ceph 架构以及原理分析

    一.架构 Ceph在一个统一的系统中独特地提供对象,块和文件存储. Ceph高度可靠,易于管理且免费. Ceph的强大功能可以改变您公司的IT基础架构以及管理大量数据的能力. Ceph提供了非凡的可扩 ...

  9. modprobe: FATAL: Module ceph not found解决办法

    问题 有可能你在进行 Ceph 文件系统挂载的时候出现下面的提示: modprobe: FATAL: Module ceph not found. mount.ceph: modprobe faile ...

随机推荐

  1. Java语言的主要特点

    Java语言有很多的优点,可靠.安全.编译和解释型语言.分布式.多线程.完全面向对象.与平台无关性等等. 与平台无关性 Java语言最大的优势在于与平台无关性,也就是可以跨平台使用. 绝大多数的编程语 ...

  2. 按ctrl+shift切换不了输入法

    解决方法: 1.在任务栏上的输入法图标上点右键选择设置2.选择键设置,双击第一个“在不同的输入语言之间切换”先勾选“切换输入语言”下面选择左手ALT.取消右边“切换键盘布局”前的勾3.进入“中文(简体 ...

  3. 不使用 vue-cli 与 vue 模版,使用 Vue2.x + webpack4.x 从零开始一步步搭建项目框架

    说明 这是我根据慕课网上的一个课程 Vue+Webpack打造todo应用 过程一步步搭下来的框架,去掉了业务相关的逻辑. 项目最终的效果包括了引入vue框架:使用CSS预处理器:使用babel:引用 ...

  4. Hadoop HBase概念学习系列之HBase里的Zookeeper(二十一)

    这个,很简单,但凡是略懂大数据的,就很清楚,不多说,直接上图.

  5. SDN 第五次上机作业

    1.搭建如下拓扑并连接控制器 2.下发相关流表和组表实现负载均衡 s1: s2: s3: s4: 3.抓包分析验证负载均衡 s4-eth1: s4-eth2: s4-eth3

  6. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  7. 3.Solr4.10.3目录结构

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.整个目录结构 (1)bin:是脚本的启动目录 (2)contrib:第三方包存放的目录 (3)dist:编 ...

  8. 基于汇编的 C/C++ 协程 - 背景知识

    近几年来,协程在 C/C++ 服务器中的解决方案开始涌现.本文主要阐述以汇编实现上下文切换的协程方案,并且说明其在异步开发模式中的应用. 本文地址:https://segmentfault.com/a ...

  9. composer(管理依赖关系的工具) 及配置信息

    Composer 是 PHP 用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件. 配置文件 ...

  10. Postman-断言和Runner

    断言(部分) // 推荐用全等 ===,确保类型和值都一致 tests['Status code is 200'] = responseCode.code === 200; //判断响应结果是否是20 ...