CEPH FILESYSTEM

參考文檔:html

  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》中的環境爲基礎,即: node

Hostnamelinux

IPvim

Servicecentos

Remark緩存

ceph01服務器

publice:172.30.200.57 網絡

cluster:192.30.200.57性能

 

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

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

3. ntp已部署;

4. 禁用selinux,firewalld或iptables。

ceph02

publice:172.30.200.58

cluster:192.30.200.58

 

ceph03

publice: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
相關文章
相關標籤/搜索