cephfs介紹和功能測試

cephfs簡介

cephfs是ceph提供的兼容POSIX協(xié)議的文件系統(tǒng),對比rbd和rgw功能,這個是ceph里最晚滿足production ready的一個功能,它底層還是使用rados存儲數(shù)據(jù)

cephfs的架構(gòu)

cephfs arch

使用cephfs的兩種方式

  1. cephfs kernel module
  2. cephfs-fuse

從上面的架構(gòu)可以看出,cephfs-fuse的IO path比較長,性能會比cephfs kernel module的方式差一些;

client端訪問cephfs的流程

cephfs cilent access
  1. client端與mds節(jié)點通訊,獲取metadata信息(metadata也存在osd上)
  2. client直接寫數(shù)據(jù)到osd

mds部署

使用ceph-deploy部署ceph mds很方便,只需要簡單的一條命令就搞定,不過它依賴之前ceph-deploy時候生成的一些配置和keyring文件;

在之前部署ceph集群的節(jié)點目錄,執(zhí)行ceph-deploy mds create:

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

// 去節(jié)點檢查下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

創(chuàng)建cephfs

創(chuàng)建第一個cephfs

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

創(chuàng)建第二個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狀態(tài)

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狀態(tài)
  • {[tstfs:0]=mds-daemon-1=up:active} : [tstfs:0]指tstfs的rank 0,mds-daemon-1是服務tstfs的mds daemon name,up:active是cephfs的狀態(tài)為 up & active

從上面的輸出可以看出,兩個cephfs只有tstfs是active的,它的mds daemon為mds-daemon-1

在ceph-deploy節(jié)點添加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節(jié)點添加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狀態(tài),若前兩個mds daemon出問題,它會頂替上去,頂替的規(guī)則可以配置,詳情參考文章:http://docs.ceph.com/docs/master/cephfs/standby/#configuring-standby-daemons

查看節(jié)點上的兩個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里創(chuàng)建多個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狀態(tài)

# 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,不要用在生成環(huán)境哦,自己測試下玩玩就行

# 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服務,現(xiàn)在看到的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/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 系統(tǒng)環(huán)境: centos73.10.0-514.26.2.el7.x86_64 機器數(shù)量:五臺 硬盤:四塊一塊為系...
    think_lonely閱讀 5,023評論 0 5
  • 前幾天有幸在日知錄社區(qū)里分享了自己對CephFS的理解與CephFS的測試分析,然后把內(nèi)容整理如下,因為內(nèi)容比較多...
    ictfox閱讀 3,000評論 0 8
  • 集群管理 每次用命令啟動、重啟、停止Ceph守護進程(或整個集群)時,必須指定至少一個選項和一個命令,還可能要指定...
    Arteezy_Xie閱讀 19,911評論 0 19
  • ceph簡介 Ceph是一個分布式存儲系統(tǒng),誕生于2004年,是最早致力于開發(fā)下一代高性能分布式文件系統(tǒng)的項目。隨...
    愛吃土豆的程序猿閱讀 6,171評論 0 21
  • 近期在linux上搭建了用于分布式存儲的----GlusterFS和Ceph這兩個開源的分布式文件系統(tǒng)。 前言--...
    ZNB_天玄閱讀 2,919評論 0 0

友情鏈接更多精彩內(nèi)容