cephfs介绍和功能测试

cephfs简介

cephfs是ceph提供的兼容POSIX协议的文件系统,对比rbd和rgw功能,这个是ceph里最晚满足production ready的一个功能,它底层还是使用rados存储数据

cephfs的架构

cephfs arch

使用cephfs的两种方式

  1. cephfs kernel module
  2. cephfs-fuse

从上面的架构可以看出,cephfs-fuse的IO path比较长,性能会比cephfs kernel module的方式差一些;

client端访问cephfs的流程

cephfs cilent access
  1. client端与mds节点通讯,获取metadata信息(metadata也存在osd上)
  2. client直接写数据到osd

mds部署

使用ceph-deploy部署ceph mds很方便,只需要简单的一条命令就搞定,不过它依赖之前ceph-deploy时候生成的一些配置和keyring文件;

在之前部署ceph集群的节点目录,执行ceph-deploy mds create:

# ceph-deploy --overwrite-conf mds create server1:mds-daemon-1

// 去节点检查下daemon
[root@server1 yangguanjun]# ps aux | grep ceph-mds
ceph      1138  0.0  0.0 3011880 14301 ?       Ssl  10:21   0:00 /usr/bin/ceph-mds -f --cluster ceph --id mds-daemon-2 --setuser ceph --setgroup ceph

创建cephfs

创建第一个cephfs

# ceph osd pool create cephfs_data 512 512        // 创建data pool
pool 'cephfs_data' created
# ceph osd pool create cephfs_metadata 512 512    // 创建metadata pool
pool 'cephfs_metadata' created
# ceph fs new tstfs cephfs_metadata cephfs_data   // 创建cephfs
new fs with metadata pool 10 and data pool 9
# ceph fs ls
name: tstfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

创建第二个cephfs

默认cephfs是不支持多个fs的,这个还是试验阶段的feature,需要打开 enable_multiple 的flag

# ceph osd pool create cephfs_metadata2 512 512
pool 'cephfs_metadata2’ created
# ceph osd pool create cephfs_data2 512 512
pool 'cephfs_data2’ created

# ceph fs new tstfs2 cephfs_metadata2 cephfs_data2
Error EINVAL: Creation of multiple filesystems is disabled.  To enable this experimental feature, use 'ceph fs flag set enable_multiple true'
# ceph fs flag set enable_multiple true
Warning! This feature is experimental.It may cause problems up to and including data loss.Consult the documentation at ceph.com, and if unsure, do not proceed.Add --yes-i-really-mean-it if you are certain.
# ceph fs flag set enable_multiple true --yes-i-really-mean-it
# ceph fs new tstfs2 cephfs_metadata2 cephfs_data2
new fs with metadata pool 11 and data pool 12

查看mds状态

ceph的mds是一个单独的daemon,它只能服务于一个cephfs,若cephfs指定多个rank了,它只能服务于其中一个rank

# ceph mds stat
e8: tstfs-1/1/1 up tstfs2-0/0/1 up {[tstfs:0]=mds-daemon-1=up:active}

对输出解释如下:

  • e8 : e标识epoch,8是epoch号
  • tstfs-1/1/1 up : tstfs是cephfs名字,后面的三个1分别是mds_map.in/mds_map.up/mds_map.max_mdsup是cephfs状态
  • {[tstfs:0]=mds-daemon-1=up:active} : [tstfs:0]指tstfs的rank 0,mds-daemon-1是服务tstfs的mds daemon name,up:active是cephfs的状态为 up & active

从上面的输出可以看出,两个cephfs只有tstfs是active的,它的mds daemon为mds-daemon-1

在ceph-deploy节点添加mds-daemon-2-1

# ceph mds stat
e11: tstfs-1/1/1 up tstfs2-1/1/1 up {[tstfs2:0]=mds-daemon-2-1=up:active,[tstfs:0]=mds-daemon-1=up:active}

添加新的mds daemon后,它会自动服务于一个没有mds daemon的cephfs

在ceph-deploy节点添加mds-daemon-2-2

# ceph mds stat
e12: tstfs-1/1/1 up tstfs2-1/1/1 up {[tstfs2:0]=mds-daemon-2=up:active,[tstfs:0]=mds-daemon=up:active}, 1 up:standby

又添加一个新的mds daemon后,它会处于standby状态,若前两个mds daemon出问题,它会顶替上去,顶替的规则可以配置,详情参考文章:http://docs.ceph.com/docs/master/cephfs/standby/#configuring-standby-daemons

查看节点上的两个mds daemon进程

[root@server2 yangguanjun]# ps aux | grep ceph-mds
ceph      2362  0.0  0.0 3061884 14604 ?       Ssl  10:26   0:00 /usr/bin/ceph-mds -f --cluster ceph --id mds-daemon-2-1 --setuser ceph --setgroup ceph
ceph      3031  0.0  0.0 3390588 13872 ?       Ssl  10:27   0:00 /usr/bin/ceph-mds -f --cluster ceph --id mds-daemon-2-2 --setuser ceph --setgroup ceph

cephfs的使用

mount & umount

# mount -t ceph 10.10.1.2:6789:/ /mnt/tstfs2/
# umount /mnt/tstfs2
# mount | grep tstfs2
10.10.1.1:6789:/ on /mnt/tstfs2 type ceph (rw,relatime)

是否支持多个cephfs?

前面我们提到可以在一个ceph cluster里创建多个cephfs,指定不同的data/metadata pool,有不同的mds daemon服务,但如何使用不同的cephfs呢?

  1. kernel cephfs

    # mount -t ceph 10.10.1.2:6789:/ /mnt/tstfs2/ -o mds_namespace=tstfs
    mount error 22 = Invalid argument
    

    这个问题的bug信息:http://tracker.ceph.com/issues/18161

  2. ceph-fuse
    待验证

查看cephfs状态

# ceph fs get tstfs
Filesystem 'tstfs' (1)
fs_name    tstfs
epoch    13
flags    0
created    2017-05-23 10:21:55.889234
modified    2017-05-23 10:21:55.889234
tableserver    0
root    0
session_timeout    60
session_autoclose    300
max_file_size    1099511627776
last_failure    0
last_failure_osd_epoch    0
compat    compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=file layout v2}
max_mds    1
in    0
up    {0=4456}
failed
damaged
stopped
data_pools    9
metadata_pool    10
inline_data    disabled
4456:    10.10.1.1:6820/1655250084 'mds-daemon-1' mds.0.4 up:active seq 484

配置cephfs的multi mds

cephfs的multi mds属性还不是production ready,不要用在生成环境哦,自己测试下玩玩就行

# ceph mds stat
e13: tstfs-1/1/1 up tstfs2-1/1/1 up {[tstfs2:0]=mds-daemon-2-1=up:active,[tstfs:0]=mds-daemon-1=up:active}, 1 up:standby
# ceph fs set tstfs allow_multimds true --yes-i-really-mean-it
# ceph fs set tstfs max_mds 2
# ceph mds stat
e17: tstfs-2/2/2 up tstfs2-1/1/1 up {[tstfs2:0]=mds-daemon-2-1=up:active,[tstfs:0]=mds-daemon-1=up:active,[tstfs:1]=mds-daemon-2-2=up:active}

从上面输出可以看出,设置tstfsmax_mds为2后,它会自动寻找一个standby的mds daemon服务,现在看到的tstfs的信息为:
tstfs-2/2/2 up[tstfs:0]=mds-daemon-1=up:active,[tstfs:1]=mds-daemon-2-2=up:active

删除cephfs和mds

机器上停止ceph mds服务
# systemctl stop ceph-mds.target

删除cephfs,有mds daemons的cephfs删除会报错,然后去mds daemon机器上停止mds服务即可
# ceph fs rm tstfs
Error EINVAL: all MDS daemons must be inactive before removing filesystem
# ceph fs rm tstfs2
Error EPERM: this is a DESTRUCTIVE operation and will make data in your filesystem permanentlyinaccessible.  Add --yes-i-really-mean-it if you are sure you wish to continue.
# ceph fs rm tstfs2 --yes-i-really-mean-it
# ceph fs rm tstfs --yes-i-really-mean-it

删除ceph nonactive mds,mds的id默认从0开始,指定不存在的id并不会报错
# ceph mds rm 0
mds gid 0 dne
# ceph mds rm 1
mds gid 1 dne
# ceph mds rm 2
mds gid 2 dne

删除cephfs使用的pool
# ceph osd pool delete cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it
...

参考

http://docs.ceph.com/docs/master/cephfs/
https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/2/html-single/ceph_file_system_guide_technology_preview/

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

推荐阅读更多精彩内容

  • 系统环境: centos73.10.0-514.26.2.el7.x86_64 机器数量:五台 硬盘:四块一块为系...
    think_lonely阅读 4,608评论 0 5
  • 前几天有幸在日知录社区里分享了自己对CephFS的理解与CephFS的测试分析,然后把内容整理如下,因为内容比较多...
    ictfox阅读 2,712评论 0 8
  • 集群管理 每次用命令启动、重启、停止Ceph守护进程(或整个集群)时,必须指定至少一个选项和一个命令,还可能要指定...
    Arteezy_Xie阅读 18,346评论 0 19
  • ceph简介 Ceph是一个分布式存储系统,诞生于2004年,是最早致力于开发下一代高性能分布式文件系统的项目。随...
    爱吃土豆的程序猿阅读 6,005评论 0 21
  • 近期在linux上搭建了用于分布式存储的----GlusterFS和Ceph这两个开源的分布式文件系统。 前言--...
    ZNB_天玄阅读 2,753评论 0 0