Introduction

NFS协议实现基于RPC(Remote Procedure Call)和XDR(eXternal Data Representation)

XDR:a standard way of representing a set of data types on a network

该文档定义了NFSv3协议;mount协议;NLM(Network Lock Manager)v3和v4的差异

 

NFSv3较v2的几点重要变化:

1、NFSv3协议扩展支持64位的文件和文件系统大小

2、支持异步读写

RPC Information

基本数据类型说明,包括错误码等

nfs查看client nfs查看file handle_客户端

     

nfs查看client nfs查看file handle_数据_02

    

nfs查看client nfs查看file handle_数据_03

Server Procedures

描述了NFSv3协议下的22种操作,分别是

0 NFSPROC3_NULL

客户端连接服务端时,首先尝试test,测试连通性

1 NFSPROC3_GETATTR

客户端获取指定FH(file handle)的元数据信息

2 NFSPROC3_SETATTR

客户端设置指定FH(file handle)的元数据信息

3 NFSPROC3_LOOKUP

客户端通过路径或者文件名称查询FH,服务端返回FH和FH对应的元数据信息

4 NFSPROC3_ACCESS

客户端想要获取FH对应的权限,服务端返回是否可以获取到

nfs查看client nfs查看file handle_nfs查看client_04

 

 

nfs查看client nfs查看file handle_数据_05

5 NFSPROC3_READLINK

6 NFSPROC3_READ

客户端读取数据,发送FH、数据大小、数据偏移量到服务端。客户端等待服务端返回具体数据。

7 NFSPROC3_WRITE

客户端写入数据,发送FH、数据大小、数据偏移量、stable(FILE_SYNC(元数据和数据)、DATA_SYNC(仅数据)或者UNSTABLE),服务端负责写入数据

file_wcc是什么东西?

8 NFSPROC3_CREATE

客户端请求服务端创建一个普通文件,发送目录的FH,文件名称等参数。其中mode(One of UNCHECKED, GUARDED, and EXCLUSIVE)有待进一步研究

尤其是verifier的概念?

9 NFSPROC3_MKDIR

客户端请求服务端创建一个目录

10 NFSPROC3_SYMLINK

11 NFSPROC3_MKNOD

 客户端请求创建特殊文件,比如socket,管道FIFO等,NAS业务一般不关心

12 NFSPROC3_REMOVE

客户端请求删除一个目录下的entry(文件或者目录等)

13 NFSPROC3_RMDIR

客户端请求删除一个目录

14 NFSPROC3_RENAME

15 NFSPROC3_LINK

16 NFSPROC3_READDIR

17 NFSPROC3_READDIRPLUS

18 NFSPROC3_FSSTAT

 客户端获取文件系统的相关信息(volatile)如挂载点FH,文件系统总大小等,类似FSINFO

19 NFSPROC3_FSINFO

客户端获取文件系统的相关信息(novolatile)

20 NFSPROC3_PATHCONF

21 NFSPROC3_COMMIT

客户端通知服务端强制下刷之前WRITE后没有落盘的数据,Procedure COMMIT forces or flushes data to stable storage that was previously written with a WRITE procedure call with the stable field set to UNSTABLE

支持下刷文件的部分偏移量数据,即使下刷部分数据,但是该文件对应的元数据均要下刷后服务端才能返回

Implementation issues

重传请求

服务端需要解决客户端发起的多次非幂等请求(多次操作的结果不一致,如创建文件,删除文件),大多数会使用缓存最近请求的方式(called the duplicate request cache)

最近相同请求返回第一次处理的原始结果

缓存策略

详细讨论见论文:Synchronization and Caching Issues in the Andrew File System [ML Kazar]

MOUNT协议

包含消息:NULL, MNT, DUMP, UMNT, UMNTALL, EXPORT

NLM(Network Lock Manager)协议

NFSv3协议配套使用NLM version 4版本

+----------+-----------+
|   NFS    |   NLM   |
| Version | Version |
+=============+
|     2       |    1, 3    |
+----------+-----------+
|     3       |      4      |
+----------+-----------+

包含的消息有:

nfs查看client nfs查看file handle_nfs查看client_06

 

 

nfs查看client nfs查看file handle_客户端_07