06 CephFS文件存儲

參考鏈接:<https://docs.ceph.com/docs/master/install/ceph-deploy/quick-cephfs/>;shell

1 CephFS介紹

1.1 CephFS概念

​ Ceph File System (CephFS) 是與 POSIX 標準兼容的文件系統, 可以提供對 Ceph 存儲集羣上的文件訪問.Jewel 版本 (10.2.0) 是第一個包含穩定 CephFS 的 Ceph 版本. vim

​ CephFS 須要至少一個元數據服務器 (Metadata Server - MDS) daemon (ceph-mds) 運行, MDS daemon 管理着與存儲在 CephFS 上的文件相關的元數據, 而且協調着對 Ceph 存儲系統的訪問。centos

06 CephFS文件存儲

1.2 CephFS架構

底層是核心集羣所依賴的, 包括:安全

  • OSDs (ceph-osd): CephFS 的數據和元數據就存儲在 OSDs 上
  • MDS (ceph-mds): Metadata Servers, 管理着 CephFS 的元數據
  • Mons (ceph-mon): Monitors 管理着集羣 Map 的主副本 Ceph 存儲集羣的協議層是 Ceph 原生的 librados 庫, 與核心集羣交互.

06 CephFS文件存儲

​ CephFS 庫層包括 CephFS 庫 libcephfs, 工做在 librados 的頂層, 表明着 Ceph 文件系統.最上層是可以訪問 Ceph 文件系統的兩類客戶端.服務器

1.3 適用場景

  • 共享目錄(在多個服務器之間共享目錄)
  • 分佈式工做流

2 CephFS配置

2.1 配置CephFS MDS

​ 要使用 CephFS, 至少就須要一個 metadata server 進程。能夠手動建立一個 MDS, 也可使用 ceph-deploy 或者 ceph-ansible 來部署 MDS。架構

1)安裝MDS分佈式

登錄到cephuser的工做目錄ide

# 能夠指定多個hostname組成集羣
[cephuser@cephmanager01 cephcluster]$ ceph-deploy mds create cephmanager01 cephmanager02 cephmanager03
# 各個節點確認進程是否依據啓動
[cephuser@cephmanager01 cephcluster]$ sudo ps -aux |grep mds
# 查看mds狀態
[cephuser@cephmanager01 cephcluster]$ sudo ceph mds stat
# 確認個節點日誌是否有錯
[cephuser@cephmanager01 cephcluster]$ sudo tail -100f /var/log/ceph/ceph-mds.cephmanager01.log

06 CephFS文件存儲

注意:因爲沒有文件系統,全部三個mds均是standy狀態性能

2.2 部署CephFS

1)CephFS 須要兩個 Pools - cephfs-data 和 cephfs-metadata, 分別存儲文件數據和文件元數據測試

[cephuser@cephmanager01 cephcluster]$ sudo ceph osd pool create cephfs-data 16 16
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd pool create cephfs-metadata 16 16
#查看pool信息,確實是否建立成功
[cephuser@cephmanager01 cephcluster]$ sudo ceph osd lspools

​ 注:通常 metadata pool 能夠從相對較少的 PGs 啓動, 以後能夠根據須要增長 PGs. 由於 metadata pool 存儲着 CephFS 文件的元數據, 爲了保證安全, 最好有較多的副本數. 爲了能有較低的延遲, 能夠考慮將 metadata 存儲在 SSDs 上.

2)建立一個 CephFS, 名字爲 cephfs:

[cephuser@cephmanager01 cephcluster]$ sudo ceph fs new cephfs cephfs-metadata cephfs-data
#查看確認
[cephuser@cephmanager01 cephcluster]$ sudo ceph fs ls

3)驗證至少有一個 MDS 已經進入 Active 狀態

[cephuser@cephmanager01 cephcluster]$ sudo ceph fs status cephfs
[cephuser@cephmanager01 cephcluster]$ sudo ceph -s

06 CephFS文件存儲

2.3 建立認證用戶

1)建立一個用戶,用於訪問CephFS

[cephuser@cephmanager01 cephcluster]$ sudo ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'

2) 驗證key是否生效

[cephuser@cephmanager01 cephcluster]$ sudo ceph auth get client.cephfs

3 CephFS使用

3.1以 kernel client 形式掛載 CephFS

確保在Linux內核2.6.34和之後的版本中

1)建立掛載點

[root@localhost ~]# mkdir /cephfs

2) 掛載目錄

# 若是有多個mon,能夠列出多個,以","隔開
[root@localhost ~]# mount -t ceph 192.168.10.51:6789:/ /cephfs/ -o name=cephfs,secret=AQDB7f5eZ9bpDxAA65iULAt2OARmKJXwwLc8GQ==

備註:centos7及以上版本支持目錄類型ceph

3) 驗證是否掛載成功

[root@localhost ~]# df -h
#掛載空間的大小登錄全部ceph剩餘空間的大小,能夠經過ceph df確認
[root@localhost ~]# stat -f /cephfs

4)查看加載內核狀況

[root@localhost ~]# lsmod |grep ceph

06 CephFS文件存儲

5) 設置自動掛載

[root@localhost ~]# echo "ceph 192.168.10.51:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ecph/cephfskey,_netdev,noatime 0 0" >> /etc/fstab

3.2以 FUSE client 形式掛載 CephFS

採用內核的形式掛載性能相對較高,對於內核不知足要求的,能夠採用FUSE

1)建立掛載點

[root@localhost ceph]# mkdir /ceph-fuse

2)安裝ceph-common和ceph-fuse

[root@localhost ~]# yum install -y ceph-common
[root@localhost ~]# yum install -y ceph-fuse

3)將服務器端集羣的ceph.conf和拷貝到客戶端(這樣就把客戶端和集羣關聯起來了)

[root@cephmanager01 cephcluster]# scp ceph.conf root@192.168.10.57:/etc/ceph/

4)編輯認證文件

將服務器端ceph auth get client.cephfs的內容複製到客戶端/etc/ceph/ceph.client.cephfs.keyring,並刪掉exported keyring for client.cephfs

[root@localhost ceph]# vim /etc/ceph/ceph.client.cephfs.keyring

[client.cephfs]
        key = AQDB7f5eZ9bpDxAA65iULAt2OARmKJXwwLc8GQ==
        caps mds = "allow rw"
        caps mon = "allow r"
        caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"

5) 使用 ceph-fuse 掛載 CephFS

# 指定了多個mon,認證應用認證文件(注意權限和ceph.conf一致)
[root@localhost ceph]# ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.10.51:6789,192.168.10.72:6789,192.168.10.75:6789  /ceph-fuse

6) 驗證 CephFS 已經成功掛載

[root@localhost ceph]# stat -f /ceph-fuse
[root@localhost ceph]# df -h

06 CephFS文件存儲
7)寫入文件進行測試

[root@localhost ceph-fuse]# echo "hello world" > /ceph-fuse/fuse.txt
[root@localhost ceph-fuse]# cat /ceph-fuse/fuse.txt

8) 自動掛載

[root@localhost ceph-fuse]# echo "id=cephfs,keyring=/etc/ceph/ceph.client.cephfs.keyring /ceph-fuse fuse.ceph defaults 0 0 _netdev" >> /etc/fstab

9) 卸載

[root@localhost ~]# fusermount -u /ceph-fuse/
相關文章
相關標籤/搜索