④ 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 cephnode01 cephnode02 cephnode03

四、部署Ceph文件系统

部署一个 CephFS, 步骤如下:

  1. 在一个 Mon 节点上创建 Ceph 文件系统.
  2. 若使用 CephX 认证,需要创建一个访问 CephFS 的客户端
  3. 挂载 CephFS 到一个专用的节点.
    • 以 kernel client 形式挂载 CephFS
    • 以 FUSE client 形式挂载 CephFS

1、创建一个 Ceph 文件系统

1、CephFS 需要两个 Pools - cephfs-data 和 cephfs-metadata, 分别存储文件数据和文件元数据

ceph osd pool create cephfs-data 256 256
ceph osd pool create cephfs-metadata 64 64
ceph osd lspools

注:一般 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 = AQDkr7NePLUoKBAANzKGnWvT6HumKWIPMDJe/Q==

5、验证key是否生效

ceph auth get client.cephfs

6、检查CephFs和mds状态

ceph mds stat
ceph fs ls
ceph fs status

1.1 以 kernel client 形式挂载 CephFS

内核态

这里可以准备一台新机器,网段相同,配置yum源,ssh,主机名

IP:192.168.0.5 host:ceph-grafana

1、创建挂载目录 cephfs

mkdir /cephfs

2、挂载目录

mount -t ceph 192.168.0.6:6789,192.168.0.7:6789,192.168.0.8:6789:/ /cephfs/ -o name=cephfs,secret=AQDkr7NePLUoKBAANzKGnWvT6HumKWIPMDJe/Q==

3、自动挂载

echo "192.168.0.6:6789,192.168.0.7:6789,192.168.0.8:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab

4、验证是否挂载成功

stat -f /cephfs

5、卸载

umount /cephfs

1.2 以 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.0.6:/etc/ceph/ceph.conf /etc/ceph/
chmod 644 /etc/ceph/ceph.conf

#创建秘钥文件,具体内容从node1上执行`ceph auth get client.cephfs`
vim /etc/ceph/ceph.client.cephfs.keyring
[client.cephfs]
    key = AQDkr7NePLUoKBAANzKGnWvT6HumKWIPMDJe/Q==
    caps mds = "allow rw"
    caps mon = "allow r"
    caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"

4、使用 ceph-fuse 挂载 CephFS

ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.0.6:6789,192.168.0.7:6789,192.168.0.8: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主备与主主切换

在cephnode01上

1、配置主主备模式

  • 当cephfs的性能出现在MDS上时,就应该配置多个活动的MDS。通常是多个客户机应用程序并行的执行大量元数据操作,并且它们分别有自己单独的工作目录。这种情况下很适合使用多主MDS模式。
  • 配置MDS多主模式
    每个cephfs文件系统都有一个max_mds设置,可以理解为它将控制创建多少个主MDS。注意只有当实际的MDS个数大于或等于max_mds设置的值时,mdx_mds设置才会生效。例如,如果只有一个MDS守护进程在运行,并且max_mds被设置为两个,则不会创建第二个主MDS。
ceph fs set cephfs max_mds 2

#验证MDS
ceph fs status cephfs

1.3、配置备用MDS
即使有多个活动的MDS,如果其中一个MDS出现故障,仍然需要备用守护进程来接管。因此,对于高可用性系统,实际配置max_mds时,最好比系统中MDS的总数少一个。

但如果你确信你的MDS不会出现故障,可以通过以下设置来通知ceph不需要备用MDS,否则会出现insufficient standby daemons available告警信息:

ceph fs set <fs> standby_count_wanted 0 
#备用数量设置为0

2、还原单主MDS

2.1、设置max_mds(也等于设置rank数)

ceph fs set cephfs max_mds 1
#这里的 1为rank的编号

2.2 删除不需要的rank

ceph mds deactivate cephfs:2

3、什么是Rank

在MDS集群中每一个MDS进程由一个Rank进行管理,Rank数量由max_mds参数配置,默认为1。每个Rank都有一个编号。编号从0开始。 rank有三种状态:

up:代表 Rank已经由某个MDS守护进程接管。
failed:代表未被接管。
damaged:代表损坏,元数据丢失或崩溃,可以使用命令ceph mds repaired修复,在未被修复之前Rank不会被分配给任何守护进程。
如果要对MDS进程做高可用,就可以启动多个MDS,然后设置多个Rank,这时候每个MDS就会关联至对应的Rank来实现高用。通常MDS的数量为Rank数量的两倍,这样可以保证任何一个Rank出现问题(Rank出现问题也就相当于MDS出现问题)有另外的MDS进程马上进行替换。

设置Rank数量

ceph fs set cephfs max_mds 1

Rank状态查看

[root@cephnode01 ~]# ceph mds stat
cephfs:1 {0=cephnode02=up:active} 2 up:standby
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 161,601评论 4 369
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,367评论 1 305
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,249评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,539评论 0 217
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,967评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,929评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,098评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,825评论 0 207
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,609评论 1 249
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,796评论 2 253
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,282评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,603评论 3 261
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,277评论 3 242
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,159评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,959评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,079评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,874评论 2 277