Ceph 文件系統 CephFS 的實戰配置,等你來學習 -- <4>


Ceph 文件系統 CephFS 的介紹與配置

CephFs介紹

Ceph File System (CephFS) 是與 POSIX 標准兼容的文件系統, 能夠提供對 Ceph 存儲集群上的文件訪問. Jewel 版本 (10.2.0) 是第一個包含穩定 CephFS 的 Ceph 版本. CephFS 需要至少一個元數據服務器 (Metadata Server - MDS) daemon (ceph-mds) 運行, MDS daemon 管理着與存儲在 CephFS 上的文件相關的元數據, 並且協調着對 Ceph 存儲系統的訪問。

對象存儲的成本比起普通的文件存儲還是較高,需要購買專門的對象存儲軟件以及大容量硬盤。如果對數據量要求不是海量,只是為了做文件共享的時候,直接用文件存儲的形式好了,性價比高。

CephFS 架構

底層是核心集群所依賴的, 包括:

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

CephFS 庫層包括 CephFS 庫 libcephfs, 工作在 librados 的頂層, 代表着 Ceph 文件系統.最上層是能夠訪問 Ceph 文件系統的兩類客戶端.

配置 CephFS MDS

要使用 CephFS, 至少就需要一個 metadata server 進程。可以手動創建一個 MDS, 也可以使用 ceph-deploy 或者 ceph-ansible 來部署 MDS。

登錄到ceph-deploy工作目錄執行
# ceph-deploy mds create $hostname

部署Ceph文件系統

部署一個 CephFS, 步驟如下:

  1. 在一個 Mon 節點上創建 Ceph 文件系統.
  2. 若使用 CephX 認證,需要創建一個訪問 CephFS 的客戶端
  3. 掛載 CephFS 到一個專用的節點.
    • 以 kernel client 形式掛載 CephFS
    • 以 FUSE client 形式掛載 CephFS

創建一個 Ceph 文件系統

1、CephFS 需要兩個 Pools - cephfs-data 和 cephfs-metadata, 分別存儲文件數據和文件元數據

# ceph osd pool create cephfs-data 256 256
# ceph osd pool create cephfs-metadata 64 64

注:一般 metadata pool 可以從相對較少的 PGs 啟動, 之后可以根據需要增加 PGs. 因為 metadata pool 存儲着 CephFS 文件的元數據, 為了保證安全, 最好有較多的副本數. 為了能有較低的延遲, 可以考慮將 metadata 存儲在 SSDs 上.

2、創建一個 CephFS, 名字為 cephfs:

# ceph fs new cephfs cephfs-metadata cephfs-data

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

ceph fs status cephfs

4、在 Monitor 上, 創建一個用戶,用於訪問CephFs

# ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata'
[client.cephfs]
	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==

5、驗證key是否生效

ceph auth get client.cephfs
exported keyring for client.cephfs
[client.cephfs]
	key = AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
	caps mds = "allow rw"
	caps mon = "allow r"
	caps osd = "allow rw pool=cephfs-data, allow rw pool=cephfs-metadata"

6、檢查CephFs和mds狀態

ceph mds stat
ceph fs ls
ceph fs status

以 kernel client 形式掛載 CephFS

1、創建掛載目錄 cephfs

# mkdir /cephfs

2、掛載目錄

# mount -t ceph 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/ /cephfs/ -o name=cephfs,secret=AQAXTwte09lkFhAA0sSPRRm5+391tYUwte2qYg==
# 秘鑰就是上面創建用戶的key

~]$ df -h
192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789:/   36G  9.2G   27G  26% /cephfs

3、自動掛載

# echo "mon1:6789,mon2:6789,mon3:6789:/ /cephfs ceph name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0" | sudo tee -a /etc/fstab

4、驗證是否掛載成功

# stat -f /cephfs

以 FUSE client 形式掛載 CephFS(失敗)

1、安裝ceph-common

yum install -y ceph-common

2、安裝ceph-fuse

yum install -y ceph-fuse

3、將集群的ceph.conf拷貝到客戶端

scp root@192.168.25.224:/etc/ceph/ceph.conf /etc/ceph/
chmod 644 /etc/ceph/ceph.conf

4、使用 ceph-fuse 掛載 CephFS

ceph-fuse --keyring  /etc/ceph/ceph.client.cephfs.keyring  --name client.cephfs -m 192.168.25.224:6789,192.168.25.227:6789,192.168.25.228:6789  /cephfs/

5、驗證 CephFS 已經成功掛載

stat -f /cephfs

6、自動掛載

echo "none /cephfs fuse.ceph ceph.id=cephfs[,ceph.conf=/etc/ceph/ceph.conf],_netdev,defaults 0 0"| sudo tee -a /etc/fstab
或
echo "id=cephfs,conf=/etc/ceph/ceph.conf /mnt/ceph2  fuse.ceph _netdev,defaults 0 0"| sudo tee -a /etc/fstab

7、卸載

fusermount -u /cephfs

MDS主備與主主切換

配置主主模式

MDS配置模式分為以下三種:

  • 冷備模式:同一時間,只有一個mds工作,單純的進程備份。
  • 熱備模式:同一時間,只有一個mds工作,但除了進程備份,也實時備份元數據,這樣可以加快MDS故障切換時間。
  • 多主模式:多個MDS同時工作,各自管理自己負責的元數據。

默認情況下,每個cephfs文件系統的MDS都是以冷備模式配置的。有時候為了獲取更高的性能,可以啟用多個活動的MDS守護進程,也就是多主模式,它們將彼此分擔元數據的工作負載。

  • 當cephfs的性能出現在MDS上時,就應該配置多個活動的MDS。通常是多個客戶機應用程序並行的執行大量元數據操作,並且它們分別有自己單獨的工作目錄。這種情況下很適合使用多主MDS模式。
  • 配置MDS多主模式
    每個cephfs文件系統都有一個max_mds設置,可以理解為它將控制創建多少個主MDS。注意只有當實際的MDS個數大於或等於max_mds設置的值時,mdx_mds設置才會生效。例如,如果只有一個MDS守護進程在運行,並且max_mds被設置為兩個,則不會創建第二個主MDS。
[root@cephnode01 ~]# ceph -s 
  cluster:
    id:     b6e6146b-c0c0-4058-927a-762b6a98d463
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum cephnode01,cephnode02,cephnode03 (age 20h)
    mgr: cephnode01(active, since 20h), standbys: cephnode02, cephnode03
    mds: cephfs:1 {0=cephnode01=up:active} 2 up:standby
    osd: 9 osds: 9 up (since 19h), 9 in (since 19h)
    rgw: 1 daemon active (cephnode01)
 
  data:
    pools:   7 pools, 608 pgs
    objects: 262 objects, 5.3 KiB
    usage:   9.1 GiB used, 27 GiB / 36 GiB avail
    pgs:     608 active+clean
 
  io:
    client:   937 B/s wr, 0 op/s rd, 3 op/s wr
 

~]$ ceph fs set cephnode01 max_mds 2

1.3、配置備用MDS
即使有多個活動的MDS,如果其中一個MDS出現故障,仍然需要備用守護進程來接管。因此,對於高可用性系統,實際配置max_mds時,最好比系統中MDS的總數少一個。

但如果你確信你的MDS不會出現故障,可以通過以下設置來通知ceph不需要備用MDS,否則會出現insufficient standby daemons available告警信息:

# ceph fs set <fs> standby_count_wanted 0 

還原單主MDS

2.1、設置max_mds

# ceph fs set cephfs max_mds 1

2.2 刪除不需要的rank

ceph mds deactivate cephfs:2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM