1. 程式人生 > 其它 >Ceph教程-Ceph儲存(七)CephFS詳解

Ceph教程-Ceph儲存(七)CephFS詳解

目錄 [隱藏]

CephFS簡介

CephFS作為Ceph叢集最早原生支援的客戶端,但成熟的最晚,而最成熟的還是RBD。要想在集中中可以使用CephFS客戶端,需要建立至少一個metadata Pool,該Pool用來管理元資料資訊,並向客戶端輸出 一個倒置樹狀的層級結構,這裡面存放了真實資料的對應關係,相當於一個索引。而還需要建立至少1個Data Pool用來儲存真正的資料。

CephFS客戶端

在開始使用CephFS之前需要建立CephFS介面,參考《叢集部署之建立CephFS》。

Ceph支援兩種型別的客戶端,一種是基於核心模組ceph.ko,這種需要客戶端安裝ceph-common程式包,並在/etc/ceph/目錄下有ceph.conf叢集配置檔案和用於認證的金鑰檔案。

另外一種客戶端為FUSE客戶端,當有些作業系統無法使用ceph.ko核心的時候就可以使用此客戶端連線。要求需要安裝ceph-fuse程式軟體,該客戶端也需要從從/etc/ceph目錄載入ceph叢集配置檔案和keyring檔案進行連線。

關於如何授權這裡也不做過多介紹,參考《認證與授權》,本案例所使用授權如下。

[client.cephfs]
	key = AQCoKNVcATH5FxAAQ3m90iGjtLvsTtiKEFGl7g==
	caps mds = "allow *"
	caps mon = "allow r"
	caps osd = "allow * pool=cehpfs-metadata, allow * pool=cehpfs-data"

授權命令如下。

~]$ ceph auth add client.cephfs mds "allow *" mon "allow r" osd "allow * pool=cehpfs-metadata, allow * pool=cehpfs-data"

需要指定對源資料儲存池和實際資料儲存池都有許可權。

核心客戶端

安裝ceph-common軟體包,複製叢集配置檔案和使用者keyring檔案至目標節點/etc/ceph目錄。

命令列掛載

~]# mount -t ceph 192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789:/ /mnt -o name=cephfs,secretfile=/etc/ceph/cephfs.key
  • -t:指定使用ceph協議,接著後面指定mon節點的訪問IP與埠,可以指定多個,使用逗號分隔,預設埠為6789。最後使用 / 代表要掛載根目錄,掛載到本地的/mnt目錄。
  • -o:指定掛載的選項,name為使用者名稱,這裡的使用者為使用者ID,不可使用使用者標識。secretfile指定該使用者的Key,可以指定Key檔案路徑,也可以直接指定Key字串。

注意:cephfs.key檔案內只能包含使用者的Key。

掛載成功後在客戶端節點使用下面命令可以檢視掛載的資訊。

~]# stat -f /mnt

通過fstab客戶端掛載

在/etc/fstab檔案內寫下如面格式的內容即可。

192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789:/	/mnt	ceph	name=cephfs,secretfile=/etc/ceph/cephfs.key,_netdev,noatime 0 0

解除安裝

~]# umount /mnt

FUSE客戶端

安裝ceph-fuse軟體包,複製叢集配置檔案和使用者keyring檔案至目標節點/etc/ceph目錄。

命令列掛載

~]# ceph-fuse -n client.cephfs -m 192.168.6.126:6789,192.168.6.127:6789,192.168.6.128:6789 /mnt/
  • -n:指定使用者標識。
  • -m:指定monitor節點資訊,之後再指定掛載的目標 。

通過fatab檔案掛載

在/etc/fstab檔案內寫下如面格式的內容即可。

none    /mnt    fuse.ceph       ceph.id=cephfs,ceph.conf=/etc/ceph/ceph.conf,_netdev,noatime 0 0

ceph.id需要為使用者的ID,而不是使用者標識。

解除安裝

~]# fusermount /mnt/

Rank

在MDS叢集中每一個MDS程序由一個Rank進行管理,Rank數量由max_mds引數配置,預設為1。每個Rank都有一個編號。編號從0開始。

rank有三種狀態:

  • up:代表 Rank已經由某個MDS守護程序接管。
  • failed:代表未被接管。
  • damaged:代表損壞,元資料丟失或崩潰,可以使用命令ceph mds repaired修復,在未被修復之前Rank不會被分配給任何守護程序。

如果要對MDS程序做高可用,就可以啟動多個MDS,然後設定多個Rank,這時候每個MDS就會關聯至對應的Rank來實現高用。通常MDS的數量為Rank數量的兩倍,這樣可以保證任何一個Rank出現問題(Rank出現問題也就相當於MDS出現問題)有另外的MDS程序馬上進行替換。

設定Rank數量

~]$ ceph fs set cephfs max_mds 2

減少Rank數量

減少Rank數量就也使用max_mds引數設定,設定的數量小於當前數量就相當於減少。如果Rank數減少需要手動關閉被停止的Rank,可以使用命令ceph fs status檢視減少後被停止的Rank,然後執行如下命令關閉被停止的Rank。

~]$ ceph mds deactivate 1

這裡的 1為rank的編號。

Rank狀態檢視

[cephadmin@ceph-monitor-1 ~]$ ceph mds stat
cephfs-2/2/2 up  {0=ceph-monitor-1=up:active,1=ceph-monitor-2=up:active}, 1 up:standby
  • cephfs-2/2/2 up:cephfs是CephFS的名稱,後面3個分別是已經分配的 Rank數、正常up的Rank數和設定的最大Rank數。
  • 0=ceph-monitor-1=up:active:代表第0個rank關聯到了ceph-monitor-1節點,並且狀態為up。
  • 1 up:standby:代表有1個備份。

高可用配置

假設啟動4個MDS程序,設定2個Rank。這時候有2個MDS程序會分配給兩個Rank,還剩下2個MDS程序分別作為另外個的備份。

1. 增加MDS例項數量與Rank數量。

2. 增加完成後再檢視CephFS狀態如下。

通過上圖可以看出有兩個Rank,分別關聯到了ceph-monitor-1和ceph-monitor-2的MDS,並且狀態為active。在最後面有兩個備份的MDS,分別為ceph-monitor-3和ceph-storage-2。

3. 設定每個Rank的備份MDS,也就是如果此Rank當前的MDS出現問題馬上切換到另個MDS。設定備份的方法有很多,常用選項如下。

  • mds_standby_replay:值為true或false,true表示開啟replay模式,這種模式下主MDS內的數量將實時與從MDS同步。如果主宕機,從可以快速的切換。如果為false只有宕機的時候才去同步資料,這樣會有一段時間的中斷。
  • mds_standby_for_name:設定當前MDS程序只用於備份於指定名稱的MDS。
  • mds_standby_for_rank:設定當前MDS程序只用於備份於哪個Rank,通常為Rank編號。另外在存在之個CephFS檔案系統中,還可以使用mds_standby_for_fscid引數來為指定不同的檔案系統。
  • mds_standby_for_fscid:指定CephFS檔案系統ID,需要聯合mds_standby_for_rank生效,如果設定mds_standby_for_rank,那麼就是用於指定檔案系統的指定Rank,如果沒有設定,就是指定檔案系統的所有Rank。

上面的配置需要寫在ceph.conf配置檔案,按本實驗目標,在管理節點上修改ceph.conf配置檔案,配置如下。

[mds.ceph-monitor-3]
mds_standby_for_name = mon.ceph-monitor-2
mds_standby_replay = true

[mds.ceph-storage-2]
mds_standby_for_name = mon.ceph-monitor-1
mds_standby_replay = true

通過以上的配置mon.ceph-monitor-3就作為了mon.ceph-monitor-2的備份,並且實時的同步資料。而mon.ceph-storage-2為mon.ceph-monitor-1的備份,也是實時的同步資料。如果想讓某一個MDS可以作用於多個MDS的備份,可配置如下。

[mds.ceph-storage-2]
mds_standby_for_fscid = 1

指定CephFS檔案系統的ID為1,如果不指定mds_standby_for_rank,代表備份於編號1的檔案系統下面的所有MDS,此方法無法實際同步資料。

修完配置後需要同步到指定的節點,然後重啟MDS程序所對應的服務。

原文地址:https://www.linux-note.cn/?p=218