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,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/73412295
NFS-Ganesha作为一个用户空间服务器,相比内核空间服务存在较多的好处。
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库来实现
Ø 没有重复的缓存和零拷贝读/写减少了方案的复杂性
FSAL(File System Abstraction Layer),文件系统抽象层,将后端存储抽象为统一的、命名空间独立的API,供应用层来调用。
上段所述的API是基于句柄(FileHandle)来实现的,而句柄在最新内核(3.10后版本)已经完全支持。
FSAL实现了用户空间指定的认证机制。
FSAL支持多种的文件系统,见“文件系统后端”
为FSAL entries管理数据cache。
为FSAL管理metadata cache
使用 ntirpc。
日志管理接口,支持写入文件和syslog
提供一个基于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.
启动一个守护进程(daemon)来通知FSAL,底层的文件系统已经发生了改变。这些信息用于失效Cache Inode或更新Cache Inode。
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.
从V2.0开始。内置的FASL能够动态加载API模块,API的设计是为了使得用户或者开发者更容易的添加额外的模块支持。
Ganesha Ceph FSAL提供一套 Ganesha Re-Export映射——能够映射到一个或多个Ceph集群(1 per export)。在内部,是由libcephfs库提供到Ceph的驱动接口。
Ceph FSAL支持RPC5661文件布局的pNFS原型,但是由于文件布局条带化模式的限制,pNFS在Ganesha2.0中无法使用。
[The Ceph FSAL has prototype pNFS support usingthe RFC5661 files layout. Due to limitations (striping patterns) in the fileslayout, pNFS is not a supported capability in Ganesha 2.0.]
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和伪路径。
参见 https://forge.gluster.org/nfs-ganesha-and-glusterfs-integration
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,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/73412295
作者:Younger Liu,
本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
原文地址:http://blog.csdn.net/younger_china/article/details/73412295