四、NFS
NFS(Sun Network File System)最初为SUN(不知道有这个公司?上百度或google查查看)提供,后移植到Linux等其他平台。其接口都已经标准化,如NFS version 3接口由RC1813定义,NFS version 4接口由 RFC3530定义。
NFS的主要特性有:1)竭力兼容Unix文件系统接口;大部分用户在操作文件的时候,可以不用关心目标文件是位于NFS远端服务器上,还是本地磁盘上。2)文件存储载体对用户透明;当客户端机器完成对服务器输出文件目录的导入之后,远端文件夹就表现的跟本地文件夹基本一样。3)服务器不维护关于客户端的状态信息。每一种客户端文件操作,并不受上次文件操作的影响。举例来说,在stdio库中,FILE数据结构保存有打开的文件句柄,记录当前读写文件位置。在NFS服务器端,并没有类似的设施。
1 架构
下图是NFS原始架构图。在LINUX实现中,大体依旧如此。先解释一下图中的几个术语:
- VFS(虚拟文件系统):LINUX支持多种文件系统,它们都通过VFS层向上提供统一的文件系统调用。
- RPC(远程过程调用):接口实现(如文件内容存储、读取、磁盘空间管理等)在远端服务器上。服务器通过某种网络协议向用户(可以在另一台机器上)暴露所实现的接口。RPC执行过程简述如下:用户程序调用某RPC接口,本地RPC运行时库负责解析、打包RPC接口名,参数类型及参数值;并将打包封装好的数据包通过网络传送到远端服务