1. 程式人生 > >【分析】Ganesha詳解

【分析】Ganesha詳解

NFS-Ganesha是一個使用者空間NFS檔案伺服器,支援NFSv3、NFSv4.0、NFSv4.1和pNFS等協議,還有Plan9作業系統的9p.2000L協議。

NFS-Ganesha通過FSAL(File System Abstraction Layer)同時支援多種檔案系統,也可以同時多種協議

NFS-GANESHA支援執行的平臺包括Linux,BSDvariants和POSIX-compliant Unixes。

目前社群積極的參與者:IBM,Panasas,Redhat,LinuxBox,CES

作者:Younger Liu,

原文地址:http://blog.csdn.net/younger_china/article/details/73412295

NFS-Ganesha作為一個使用者空間伺服器,相比核心空間服務存在較多的好處。

1   User Server > Kernel Server

1.   核心級服務需要提供更多的up-calls

Ø  Mounted和exportfs資訊

Ø  ID對映

Ø  GSS API

Ø  客戶端ID跟蹤

Ø  Statd

Ø  叢集相關的服務

2.   為什麼使用者空間更好

Ø  使用者空間比核心空間更具有靈活性

Ø  更容易的實現restart、failover、failback

Ø  不需要實現系統呼叫

Ø  不需要與使用者空間的upcalls互動

Ø  Clustering實現變得比較容易

Ø  可以提供有針對性的快取功能

Ø  更加靈活的FSAL

Ø  可以更好的利用檔案系統的特定功能

Ø  可以支援通用的DLM分散式鎖管理來支援多種協議

Ø  易於實現Multi-tenancy

Ø  容易監測和控制資源消耗

Ø  除錯和管理更加方便:由於在使用者空間實現,因此不需要考慮kernel Crash。

3.   核心級服務的好處哪?

Ø  檔案控制代碼(Filehandles):作為主要優勢,核心已經實現了通用的檔案控制代碼

Ø  效能:使用者空間可能相對比較差一些,但是通過針對性的快取方案、定製化的RPC方案、執行緒化/並行化執行等手段來提供效能

Ø  所有權/許可權:核心態基本不需要考慮所有權和許可權問題,使用者態針對每個程序均需要考慮。可以通過統一的系統呼叫或者lib庫來實現

Ø  沒有重複的快取和零拷貝讀/寫減少了方案的複雜性

2  架構分析

 

2.1 FSAL

FSAL(File System Abstraction Layer),檔案系統抽象層,將後端儲存抽象為統一的、名稱空間獨立的API,供應用層來呼叫。

上段所述的API是基於控制代碼(FileHandle)來實現的,而控制代碼在最新核心(3.10後版本)已經完全支援。

FSAL實現了使用者空間指定的認證機制。

FSAL支援多種的檔案系統,見“檔案系統後端

2.2 File Content Cache

為FSAL entries管理資料cache。

2.3 Cache inode

為FSAL管理metadata cache

2.4 RPC Layer

使用 ntirpc。

2.5 Log管理

日誌管理介面,支援寫入檔案和syslog

2.6 Hash Table

提供一個基於HashTable的紅黑樹,提供關聯定址到內部結構。此層被廣泛用於建立各種快取記憶體,包括元資料快取。

provides a Red-Black Tree based hash table to provide associative addressingto internal structure. This layer is widely used to build various cache, includingthe metadata cache.

2.7 FSAL UP / Cache Inode UP

provides the daemon with a way to be notified by the FSAL thatchanges have been made to the underlying FS outside Ganesha.

These information is used to invalidate or update the Cache Inode.

2.8 檔案系統後端

從V2.0開始。內建的FASL能夠動態載入API模組,API的設計是為了使得使用者或者開發者更容易的新增額外的模組支援。

2.8.1  CEPH

Ganesha Ceph FSAL提供一套 Ganesha Re-Export對映——能夠對映到一個或多個Ceph叢集(1 per export)。在內部,是由libcephfs庫提供到Ceph的驅動介面。

Ceph FSAL支援RPC5661檔案佈局的pNFS原型,但是由於檔案佈局條帶化模式的限制,pNFS在Ganesha2.0中無法使用。

2.8.2  GLUSTER

FSAL Layer是集成了Nfs-Ganesha和GlusterFS檔案系統。如果在nfs-ganesha conf配置檔案中設定了FSAL GLUSTER enabled,那麼就可以通過nfs-ganesha匯出GlusterFS卷。這就意味者,NFSv3和NFSv4客戶端均可以使用GlusterFS卷。

nfs-ganesha可以部署在 GlusterFS 節點,也可以部署在GlusterFS叢集以外。使用 GlusterFS 除了基於社群許可證(www.gluster.org) 外,沒有其他特別許可證。

nfs-ganesha和 GlusterFS 整合通過 FSAL_GLUSTERenable 使得 Gluster 卷匯出(export)和可用。FSAL_GLUSTER 層與 GlusterFS 檔案系統的是libgfapi庫(Libgfapi是GlusterFS 社群的一部分)來實現。

使用者安裝GlusterFS過程中,啟動nfs-ganesha之前必須保證libgfapi是可用的。而開發人員需要幾個額外的標頭檔案 ︰ glfs.h 和 glfs handles.h。

在原始碼包中,為GlusterFS提供了簡單的nfs-ganesha配置檔案,在$TOP/src/FSAL/FSAL_GLUSTER的README中。需要修改主機名、IP、匯出卷的名字,v4需要使用的block和偽路徑。

2.8.3  VFS

VFS FSAL 可以使用任何檔案提供給作業系統的 Posix 介面。唯一的要求是檔案系統能夠生成和使用"file handles"。XFS在 Linux 系統中是較早支援"filehandles"的,因此,在舊的linux核心版本中,FSAL可以使用 XFS 。在2.6.38及之後版本,添加了一組通用的“file handles”系統呼叫,所以FSAL可以支援linux系統的任何檔案系統型別。這是這個 FSAL的預設控制代碼管理。

VFS FSAL 還支援 Linux中EXOFS檔案系統的pNFS 佈局 、還支援linux和FreeBSD的 PanFS (Panasas 專有) 檔案系統的pNFS 佈局。它是由export定義的選項啟用。

等等

作者:Younger Liu,

原文地址:http://blog.csdn.net/younger_china/article/details/73412295


作者:Younger Liu,

原文地址:http://blog.csdn.net/younger_china/article/details/73412295