參考文檔:html
以《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) |
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
# 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
# 格式: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
在ceph-client節點掛載cephfs,CephFS有兩種掛載方式:
經過內核掛載cephfs,對內核版本有必定要求,最佳實踐中並未給出最低版本的要求,只是建議若是從Ceph 10.x (Jewel) 算起,最好用 4.x 以上的內核,但v3.x基本支持。
# 建立掛載點 [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==
# 3副本環境,ceph集羣450GB的總容量合併爲140GB左右 [root@ceph-client ~]# df -Th
# 也可經過」dmesg | tail」觀察掛載狀況 [root@ceph-client ~]# dmesg | tail
# 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
# 安裝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/
# 格式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
# 命令」dmesg | tail」也可查看; # 經過格式1掛載,filesystem源是ceph-fuse,並未綁定特定mon節點,文件系統是fuse.ceph-fuse [root@ceph-client ~]# df -Th
# 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