25 NFS Ganesha #
NFS Ganesha 是一部 NFS 伺服器,它在使用者位址空間中執行,而不是做為作業系統核心的一部分執行。憑藉 NFS Ganesha,您可以插入自己的儲存機制 (例如 Ceph),並從任何 NFS 用戶端存取它。如需安裝說明,請參閱第 8.3.6 節 「部署 NFS Ganesha」。
由於用戶端與儲存區之間的額外網路躍程會導致通訊協定負擔新增並產生額外的延遲,因此與使用原生 CephFS 相比,透過 NFS 閘道存取 Ceph 可能會使應用程式效能大幅降低。
每個 NFS Ganesha 服務都含有一個組態階層,其中包含:
開機
ganesha.conf
每個服務的 RADOS 通用組態物件
每個輸出的 RADOS 組態物件
開機組態是要在容器中啟動 nfs-ganesha
精靈的最低組態。每個開機組態都將包含一個 %url
指令,該指令中包含來自 RADOS 通用組態物件的任何額外組態。通用組態物件可以為輸出 RADOS 組態物件中定義的每個 NFS 輸出包含額外的 %url
指令。
25.1 建立 NFS 服務 #
指定 Ceph 服務部署的推薦方法是建立一個 YAML 格式的檔案,其中包含所要部署服務的規格。您可以為每種類型的服務建立單獨的規格檔案,也可以在一個檔案中指定多個 (或所有) 服務類型。
依據您的選擇,您將需要更新或建立相關的 YAML 格式檔案來建立 NFS Ganesha 服務。如需建立該檔案的詳細資訊,請參閱第 8.2 節 「服務和放置規格」。
更新或建立該檔案之後,請執行以下指令以建立 nfs-ganesha
服務:
cephuser@adm >
ceph orch apply -i FILE_NAME
25.2 啟動或重新啟動 NFS Ganesha #
啟動 NFS Ganesha 服務不會自動輸出 CephFS 檔案系統。若要輸出 CephFS 檔案系統,請建立輸出組態檔案。如需更多詳細資料,請參閱 第 25.4 節 「建立 NFS 輸出」。
若要啟動 NFS Ganesha 服務,請執行:
cephuser@adm >
ceph orch start nfs.SERVICE_ID
若要重新啟動 NFS Ganesha 服務,請執行:
cephuser@adm >
ceph orch restart nfs.SERVICE_ID
如果您只想重新啟動單個 NFS Ganesha 精靈,請執行:
cephuser@adm >
ceph orch daemon restart nfs.SERVICE_ID
啟動或重新啟動 NFS Ganesha 時,NFS v4 會有 90 秒的逾時寬限期間。在寬限期間,系統會主動拒絕來自用戶端的新要求。因此,當 NFS 處於寬限期內,用戶端可能會發生要求處理速度變慢的情況。
25.3 列出 NFS 復原池中的物件 #
執行以下指令以列出 NFS 復原池中的物件:
cephuser@adm >
rados --pool POOL_NAME --namespace NAMESPACE_NAME ls
25.4 建立 NFS 輸出 #
您可以在 Ceph Dashboard 中建立 NFS 輸出,也可以在指令行上以手動方式建立。若要使用 Ceph Dashboard 建立 NFS 輸出,請參閱第 7 章 「管理 NFS Ganesha」,更具體地說,請參閱第 7.1 節 「建立 NFS 輸出項」。
若要以手動方式建立 NFS 輸出,請建立輸出的組態檔案。例如,包含以下內容的 /tmp/export-1
檔案:
EXPORT { export_id = 1; path = "/"; pseudo = "/"; access_type = "RW"; squash = "no_root_squash"; protocols = 3, 4; transports = "TCP", "UDP"; FSAL { name = "CEPH"; user_id = "admin"; filesystem = "a"; secret_access_key = "SECRET_ACCESS_KEY"; } }
建立並儲存新輸出的組態檔案後,執行以下指令來建立該輸出:
rados --pool POOL_NAME --namespace NAMESPACE_NAME put EXPORT_NAME EXPORT_CONFIG_FILE
例如:
cephuser@adm >
rados --pool example_pool --namespace example_namespace put export-1 /tmp/export-1
應修改 FSAL 區塊以包含所需的 cephx
使用者 ID 和機密存取金鑰。
25.5 確認 NFS 輸出 #
NFS v4 將在虛擬檔案系統的根目錄下構建輸出清單。您可以透過掛接 NFS Ganesha 伺服器節點的 /
來確認 NFS 共用是否已輸出:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint#
ls
/path/to/local/mountpoint cephfs
依預設,cephadm 將設定 NFS v4 伺服器。NFS v4 不會與 rpcbind
或 mountd
精靈進行互動。NFS 用戶端工具 (例如 showmount
) 將不會顯示任何已設定的輸出。
25.6 掛接 NFS 輸出 #
若要在用戶端主機上掛接輸出的 NFS 共用,請執行:
#
mount
-t nfs nfs_ganesha_server_hostname:/ /path/to/local/mountpoint
25.7 多個 NFS Ganesha 叢集 #
可以定義多個 NFS Ganesha 叢集。如此便可:
分隔 NFS Ganesha 叢集,以便存取 CephFS。