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程序所對應的服務。