目录
一、简略
什么是NFS-Ganesha?
- 用户态的支持NFS协议(NFSv3/NFSv4,NFSv4.1)的文件服务器。
- 它的客户是Unix和类Unix的操作系统。为
- Unix和类Unix的操作系统提供了FUSE(Filesystem in Userspace)兼容的接口FSAL。
- Unix和类Unix的操作系统通过NFS Client可以访问存储设备(本地or分布式集群)。
什么是FUSE?
Filesystem in Userspace,用户空间实现文件系统。NFS-Ganesha就是实现FUSE的一种方式。
FUSE和Ganesha的关系是什么?
NFS-Ganesha就是实现FUSE的一种方式。
二、说明
1、什么是NFS-Ganesha
“Ganesha是一个全新的程序,可能对比kernel版本的NFSv4” 根据这句话,Ganesha应该是一个第三方文件系统,对标kernel的NFSv4这些系统。
NFS-Ganesha 通过FSAL((File System Abstraction Layer文件系统抽象层)将一个后端存储抽象成一个统一的API,提供给Ganesha服务端,然后通过NFS协议将其挂载到客户端。在客户端上对挂出来的空间进行操作。
NFS-Ganesha是一个用户态的支持NFS协议(NFSv3/NFSv4,NFSv4.1)的文件服务器,它为Unix和类Unix的操作系统提供了FUSE(Filesystem in Userspace)兼容的接口FSAL(File System Abstraction Layer) 。这样用户通过NFS Client可以访问自己的存储设备。NFS-Ganesha 服务允许用户通过FSAL在用户态访问数据而不需要和内核频繁的交互,大大的减少了数据读取的响应时间。
NFS Ganesha 分层架构图
摘抄或节选自:NFS-Ganesha框架学习_u012114090的博客-CSDN博客_nfs-ganesha
2、NFS-Ganesha的优点
Ganesha是一个全新的程序,可能对比kernel版本的NFSv4,Ganesha的性能有所欠缺,但是基于user-space的方法会带来更多有意思的功能。
- 灵活的内存分配——只需要4GB来可以实现百万级别的数据缓存
- 更强的可移植性——如果NFS Ganesha是kernel-space的话,那样NFS Ganesha的内部结构只能适应一款特定的OS,而很难移植到别的OS上.Ganesha设计初衷是成为一个NFSv4通用服务器,可以实现NFSv4的所有功能,因此也需要适配各种文件系统。
- 更便捷的访问机制——内核中的NFSv4访问用户空间中的服务不是那么方便,因此其引入了rpc_pipefs机制, 用于解决用户空间服务的桥梁,并且 使用kerberos5管理安全性或idmapd守护程序来进行用户名转换。然而Ganesha不需要这些,它使用常规API来对外提供服务。
- 对接FUSE——由于NFS Ganesha是一个运行在用户空间的程序,因此它还提供了对一些用户空间文件系统(FUSE,Filesystem in Userspace))的支持,可以让我们直接把FUSE挂载在NFS上而不需要内核的帮助。
3、NFS Ganesha对接Ceph RGW实例
NFS Ganesha workflow
摘抄或节选自:NFS-Ganesha框架学习_u012114090的博客-CSDN博客_nfs-ganesha
4、什么是FUSE
(本章部分摘自:https://zhuanlan.zhihu.com/p/106719192)
fuse是什么?
FUSE,implementing filesystems in user space,在用户空间实现文件系统。简单讲,用户可通过fuse在用户空间来定制实现自己的文件系统。
为什么要有fuse?
现存文件系统难以满足用户的特别需求,内核下定制开发文件系统难度较高,在用户空间可定制实现文件系统是有需求的。并且,用户空间下调试工具丰富,出问题不会导致系统崩溃,开发难度相对较低,开发周期较短。
fuse工作原理
完整的fuse功能包括a)用户态customize文件系统b)用户态fuse库(libfuse)c)内核支持(fs/fuse/*),共3层结构协作完成。