cephfs如何配置多主(多活)MDS
title: cephfs如何配置多主(多活)MDS
2019/03/29 ypdai
配置多主MDS
MDS配置模式分為以下三種:
- 冷備模式:同一時間,只有一個mds工作,單純的進程備份。
- 熱備模式:同一時間,只有一個mds工作,但除了進程備份,也實時備份元數據,這樣可以加快MDS故障切換時間。
- 多主模式:多個MDS同時工作,各自管理自己負責的元數據。
默認情況下,每個cephfs文件系統的MDS都是以冷備模式配置的。有時候為了獲取更高的性能,可以啟用多個活動的MDS守護進程,也就是多主模式,它們將彼此分擔元數據的工作負載。
下面主要介紹如何配置MDS多主模式。
1、什么時候需要配置多主MDS?
當cephfs的性能出現在MDS上時,就應該配置多個活動的MDS。通常是多個客戶機應用程序並行的執行大量元數據操作,並且它們分別有自己單獨的工作目錄。這種情況下很適合使用多主MDS模式。
2、開始配置MDS多主模式
2.1、增加max_mds
每個cephfs文件系統都有一個max_mds
設置,可以理解為它將控制創建多少個主MDS。注意只有當實際的MDS個數大於或等於max_mds
設置的值時,mdx_mds
設置才會生效。例如,如果只有一個MDS守護進程在運行,並且max_mds
被設置為兩個,則不會創建第二個主MDS。
將max_mds設置為所需的個數:
$ ceph fs set max_mds 2
2.2、配置備用MDS
即使有多個活動的MDS,如果其中一個MDS出現故障,仍然需要備用守護進程來接管。因此,對於高可用性系統,實際配置max_mds
時,最好比系統中MDS的總數少一個。
但如果你確信你的MDS不會出現故障,可以通過以下設置來通知ceph不需要備用MDS,否則會出現insufficient standby daemons available
告警信息:
$ ceph fs set <fs> standby_count_wanted 0
2.3、綁定集群目錄到指定的MDS上
在多主MDS配置中,這些MDS可以在集群中均勻的動態的分配元數據負載。但還有一種情況就是我們需要把某個集群目錄綁定到一個指定MDS上,只讓這個MDS來負責這個目錄的元數據處理,比如我有兩個集群目錄dir01、dir02,然后我配置MDS01、MDS02為雙主模式同時工作,這樣我就可以讓MDS01負責dir01的元數據,MDS02負責dir02的元數據。這樣配置好處顯而易見。
配置方式:
$ setfattr -n ceph.dir.pin -v {mds-rank} {path-to-dir}
{mds-rank}從0開始,ceph -s命令輸出里面可以看到:
# node01節點上mds-rank為0,node02節點上的mds-rank為1
mds: ceph-2/2/2 up {0=node01=up:active,1=node02=up:active}
{path-to-dir}表示需要綁定到指定mds-rank
上的集群目錄。
這樣就配置好了,步驟比較簡單。
2.4、還原為單主MDS
恢復也就兩步:
# 設置max_mds $ ceph fs set max_mds 1 # 刪除不需要的rank $ ceph mds deactivate {cephfs-name}:{mds-rank}
注意所有的rank,包括要被移除的rank,必須先激活。這意味着必須至少有max_mds
個MDS守護進程可用。
在一段時間內,停用的rank將首先進入停止狀態,同時將其負責的元數據傳遞給剩余的活動的MDS。這個階段可能需要幾秒鍾到幾分鍾。