rfc3010.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,421 行 · 第 1/5 页
TXT
1,421 行
Network Working Group S. Shepler
Request for Comments: 3010 B. Callaghan
Obsoletes: 1813, 1094 D. Robinson
Category: Standards Track R. Thurlow
Sun Microsystems Inc.
C. Beame
Hummingbird Ltd.
M. Eisler
Zambeel, Inc.
D. Noveck
Network Appliance, Inc.
December 2000
NFS version 4 Protocol
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract
NFS (Network File System) version 4 is a distributed file system
protocol which owes heritage to NFS protocol versions 2 [RFC1094] and
3 [RFC1813]. Unlike earlier versions, the NFS version 4 protocol
supports traditional file access while integrating support for file
locking and the mount protocol. In addition, support for strong
security (and its negotiation), compound operations, client caching,
and internationalization have been added. Of course, attention has
been applied to making NFS version 4 operate well in an Internet
environment.
Key Words
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.
Shepler, et al. Standards Track [Page 1]
RFC 3010 NFS version 4 Protocol December 2000
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1. Overview of NFS Version 4 Features . . . . . . . . . . . . 6
1.1.1. RPC and Security . . . . . . . . . . . . . . . . . . . . 6
1.1.2. Procedure and Operation Structure . . . . . . . . . . . 7
1.1.3. File System Model . . . . . . . . . . . . . . . . . . . 8
1.1.3.1. Filehandle Types . . . . . . . . . . . . . . . . . . . 8
1.1.3.2. Attribute Types . . . . . . . . . . . . . . . . . . . 8
1.1.3.3. File System Replication and Migration . . . . . . . . 9
1.1.4. OPEN and CLOSE . . . . . . . . . . . . . . . . . . . . . 9
1.1.5. File locking . . . . . . . . . . . . . . . . . . . . . . 9
1.1.6. Client Caching and Delegation . . . . . . . . . . . . . 10
1.2. General Definitions . . . . . . . . . . . . . . . . . . . 11
2. Protocol Data Types . . . . . . . . . . . . . . . . . . . . 12
2.1. Basic Data Types . . . . . . . . . . . . . . . . . . . . . 12
2.2. Structured Data Types . . . . . . . . . . . . . . . . . . 14
3. RPC and Security Flavor . . . . . . . . . . . . . . . . . . 18
3.1. Ports and Transports . . . . . . . . . . . . . . . . . . . 18
3.2. Security Flavors . . . . . . . . . . . . . . . . . . . . . 18
3.2.1. Security mechanisms for NFS version 4 . . . . . . . . . 19
3.2.1.1. Kerberos V5 as security triple . . . . . . . . . . . . 19
3.2.1.2. LIPKEY as a security triple . . . . . . . . . . . . . 19
3.2.1.3. SPKM-3 as a security triple . . . . . . . . . . . . . 20
3.3. Security Negotiation . . . . . . . . . . . . . . . . . . . 21
3.3.1. Security Error . . . . . . . . . . . . . . . . . . . . . 21
3.3.2. SECINFO . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4. Callback RPC Authentication . . . . . . . . . . . . . . . 22
4. Filehandles . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1. Obtaining the First Filehandle . . . . . . . . . . . . . . 24
4.1.1. Root Filehandle . . . . . . . . . . . . . . . . . . . . 24
4.1.2. Public Filehandle . . . . . . . . . . . . . . . . . . . 24
4.2. Filehandle Types . . . . . . . . . . . . . . . . . . . . . 25
4.2.1. General Properties of a Filehandle . . . . . . . . . . . 25
4.2.2. Persistent Filehandle . . . . . . . . . . . . . . . . . 26
4.2.3. Volatile Filehandle . . . . . . . . . . . . . . . . . . 26
4.2.4. One Method of Constructing a Volatile Filehandle . . . . 28
4.3. Client Recovery from Filehandle Expiration . . . . . . . . 28
5. File Attributes . . . . . . . . . . . . . . . . . . . . . . 29
5.1. Mandatory Attributes . . . . . . . . . . . . . . . . . . . 30
5.2. Recommended Attributes . . . . . . . . . . . . . . . . . . 30
5.3. Named Attributes . . . . . . . . . . . . . . . . . . . . . 31
5.4. Mandatory Attributes - Definitions . . . . . . . . . . . . 31
5.5. Recommended Attributes - Definitions . . . . . . . . . . . 33
5.6. Interpreting owner and owner_group . . . . . . . . . . . . 38
5.7. Character Case Attributes . . . . . . . . . . . . . . . . 39
5.8. Quota Attributes . . . . . . . . . . . . . . . . . . . . . 39
5.9. Access Control Lists . . . . . . . . . . . . . . . . . . . 40
Shepler, et al. Standards Track [Page 2]
RFC 3010 NFS version 4 Protocol December 2000
5.9.1. ACE type . . . . . . . . . . . . . . . . . . . . . . . . 41
5.9.2. ACE flag . . . . . . . . . . . . . . . . . . . . . . . . 41
5.9.3. ACE Access Mask . . . . . . . . . . . . . . . . . . . . 43
5.9.4. ACE who . . . . . . . . . . . . . . . . . . . . . . . . 44
6. File System Migration and Replication . . . . . . . . . . . 44
6.1. Replication . . . . . . . . . . . . . . . . . . . . . . . 45
6.2. Migration . . . . . . . . . . . . . . . . . . . . . . . . 45
6.3. Interpretation of the fs_locations Attribute . . . . . . . 46
6.4. Filehandle Recovery for Migration or Replication . . . . . 47
7. NFS Server Name Space . . . . . . . . . . . . . . . . . . . 47
7.1. Server Exports . . . . . . . . . . . . . . . . . . . . . . 47
7.2. Browsing Exports . . . . . . . . . . . . . . . . . . . . . 48
7.3. Server Pseudo File System . . . . . . . . . . . . . . . . 48
7.4. Multiple Roots . . . . . . . . . . . . . . . . . . . . . . 49
7.5. Filehandle Volatility . . . . . . . . . . . . . . . . . . 49
7.6. Exported Root . . . . . . . . . . . . . . . . . . . . . . 49
7.7. Mount Point Crossing . . . . . . . . . . . . . . . . . . . 49
7.8. Security Policy and Name Space Presentation . . . . . . . 50
8. File Locking and Share Reservations . . . . . . . . . . . . 50
8.1. Locking . . . . . . . . . . . . . . . . . . . . . . . . . 51
8.1.1. Client ID . . . . . . . . . . . . . . . . . . . . . . . 51
8.1.2. Server Release of Clientid . . . . . . . . . . . . . . . 53
8.1.3. nfs_lockowner and stateid Definition . . . . . . . . . . 54
8.1.4. Use of the stateid . . . . . . . . . . . . . . . . . . . 55
8.1.5. Sequencing of Lock Requests . . . . . . . . . . . . . . 56
8.1.6. Recovery from Replayed Requests . . . . . . . . . . . . 56
8.1.7. Releasing nfs_lockowner State . . . . . . . . . . . . . 57
8.2. Lock Ranges . . . . . . . . . . . . . . . . . . . . . . . 57
8.3. Blocking Locks . . . . . . . . . . . . . . . . . . . . . . 58
8.4. Lease Renewal . . . . . . . . . . . . . . . . . . . . . . 58
8.5. Crash Recovery . . . . . . . . . . . . . . . . . . . . . . 59
8.5.1. Client Failure and Recovery . . . . . . . . . . . . . . 59
8.5.2. Server Failure and Recovery . . . . . . . . . . . . . . 60
8.5.3. Network Partitions and Recovery . . . . . . . . . . . . 62
8.6. Recovery from a Lock Request Timeout or Abort . . . . . . 63
8.7. Server Revocation of Locks . . . . . . . . . . . . . . . . 63
8.8. Share Reservations . . . . . . . . . . . . . . . . . . . . 65
8.9. OPEN/CLOSE Operations . . . . . . . . . . . . . . . . . . 65
8.10. Open Upgrade and Downgrade . . . . . . . . . . . . . . . 66
8.11. Short and Long Leases . . . . . . . . . . . . . . . . . . 66
8.12. Clocks and Calculating Lease Expiration . . . . . . . . . 67
8.13. Migration, Replication and State . . . . . . . . . . . . 67
8.13.1. Migration and State . . . . . . . . . . . . . . . . . . 67
8.13.2. Replication and State . . . . . . . . . . . . . . . . . 68
8.13.3. Notification of Migrated Lease . . . . . . . . . . . . 69
9. Client-Side Caching . . . . . . . . . . . . . . . . . . . . 69
9.1. Performance Challenges for Client-Side Caching . . . . . . 70
9.2. Delegation and Callbacks . . . . . . . . . . . . . . . . . 71
Shepler, et al. Standards Track [Page 3]
RFC 3010 NFS version 4 Protocol December 2000
9.2.1. Delegation Recovery . . . . . . . . . . . . . . . . . . 72
9.3. Data Caching . . . . . . . . . . . . . . . . . . . . . . . 74
9.3.1. Data Caching and OPENs . . . . . . . . . . . . . . . . . 74
9.3.2. Data Caching and File Locking . . . . . . . . . . . . . 75
9.3.3. Data Caching and Mandatory File Locking . . . . . . . . 77
9.3.4. Data Caching and File Identity . . . . . . . . . . . . . 77
9.4. Open Delegation . . . . . . . . . . . . . . . . . . . . . 78
9.4.1. Open Delegation and Data Caching . . . . . . . . . . . . 80
9.4.2. Open Delegation and File Locks . . . . . . . . . . . . . 82
9.4.3. Recall of Open Delegation . . . . . . . . . . . . . . . 82
9.4.4. Delegation Revocation . . . . . . . . . . . . . . . . . 84
9.5. Data Caching and Revocation . . . . . . . . . . . . . . . 84
9.5.1. Revocation Recovery for Write Open Delegation . . . . . 85
9.6. Attribute Caching . . . . . . . . . . . . . . . . . . . . 85
9.7. Name Caching . . . . . . . . . . . . . . . . . . . . . . . 86
9.8. Directory Caching . . . . . . . . . . . . . . . . . . . . 87
10. Minor Versioning . . . . . . . . . . . . . . . . . . . . . 88
11. Internationalization . . . . . . . . . . . . . . . . . . . 91
11.1. Universal Versus Local Character Sets . . . . . . . . . . 91
11.2. Overview of Universal Character Set Standards . . . . . . 92
11.3. Difficulties with UCS-4, UCS-2, Unicode . . . . . . . . . 93
11.4. UTF-8 and its solutions . . . . . . . . . . . . . . . . . 94
11.5. Normalization . . . . . . . . . . . . . . . . . . . . . . 94
12. Error Definitions . . . . . . . . . . . . . . . . . . . . . 95
13. NFS Version 4 Requests . . . . . . . . . . . . . . . . . . 99
13.1. Compound Procedure . . . . . . . . . . . . . . . . . . . 100
13.2. Evaluation of a Compound Request . . . . . . . . . . . . 100
13.3. Synchronous Modifying Operations . . . . . . . . . . . . 101
13.4. Operation Values . . . . . . . . . . . . . . . . . . . . 102
14. NFS Version 4 Procedures . . . . . . . . . . . . . . . . . 102
14.1. Procedure 0: NULL - No Operation . . . . . . . . . . . . 102
14.2. Procedure 1: COMPOUND - Compound Operations . . . . . . . 102
14.2.1. Operation 3: ACCESS - Check Access Rights . . . . . . . 105
14.2.2. Operation 4: CLOSE - Close File . . . . . . . . . . . . 108
14.2.3. Operation 5: COMMIT - Commit Cached Data . . . . . . . 109
14.2.4. Operation 6: CREATE - Create a Non-Regular File Object. 112
14.2.5. Operation 7: DELEGPURGE - Purge Delegations Awaiting
Recovery . . . . . . . . . . . . . . . . . . . . . . . 114
14.2.6. Operation 8: DELEGRETURN - Return Delegation . . . . . 115
14.2.7. Operation 9: GETATTR - Get Attributes . . . . . . . . . 115
14.2.8. Operation 10: GETFH - Get Current Filehandle . . . . . 117
14.2.9. Operation 11: LINK - Create Link to a File . . . . . . 118
14.2.10. Operation 12: LOCK - Create Lock . . . . . . . . . . . 119
14.2.11. Operation 13: LOCKT - Test For Lock . . . . . . . . . 121
14.2.12. Operation 14: LOCKU - Unlock File . . . . . . . . . . 122
14.2.13. Operation 15: LOOKUP - Lookup Filename . . . . . . . . 123
14.2.14. Operation 16: LOOKUPP - Lookup Parent Directory . . . 126
Shepler, et al. Standards Track [Page 4]
RFC 3010 NFS version 4 Protocol December 2000
14.2.15. Operation 17: NVERIFY - Verify Difference in
Attributes . . . . . . . . . . . . . . . . . . . . . . 127
14.2.16. Operation 18: OPEN - Open a Regular File . . . . . . . 128
14.2.17. Operation 19: OPENATTR - Open Named Attribute
Directory . . . . . . . . . . . . . . . . . . . . . . 137
14.2.18. Operation 20: OPEN_CONFIRM - Confirm Open . . . . . . 138
14.2.19. Operation 21: OPEN_DOWNGRADE - Reduce Open File Access 140
14.2.20. Operation 22: PUTFH - Set Current Filehandle . . . . . 141
14.2.21. Operation 23: PUTPUBFH - Set Public Filehandle . . . . 142
14.2.22. Operation 24: PUTROOTFH - Set Root Filehandle . . . . 143
14.2.23. Operation 25: READ - Read from File . . . . . . . . . 144
14.2.24. Operation 26: READDIR - Read Directory . . . . . . . . 146
14.2.25. Operation 27: READLINK - Read Symbolic Link . . . . . 150
14.2.26. Operation 28: REMOVE - Remove Filesystem Object . . . 151
14.2.27. Operation 29: RENAME - Rename Directory Entry . . . . 153
14.2.28. Operation 30: RENEW - Renew a Lease . . . . . . . . . 155
14.2.29. Operation 31: RESTOREFH - Restore Saved Filehandle . . 156
14.2.30. Operation 32: SAVEFH - Save Current Filehandle . . . . 157
14.2.31. Operation 33: SECINFO - Obtain Available Security . . 158
14.2.32. Operation 34: SETATTR - Set Attributes . . . . . . . . 160
14.2.33. Operation 35: SETCLIENTID - Negotiate Clientid . . . . 162
14.2.34. Operation 36: SETCLIENTID_CONFIRM - Confirm Clientid . 163
14.2.35. Operation 37: VERIFY - Verify Same Attributes . . . . 164
14.2.36. Operation 38: WRITE - Write to File . . . . . . . . . 166
15. NFS Version 4 Callback Procedures . . . . . . . . . . . . . 170
15.1. Procedure 0: CB_NULL - No Operation . . . . . . . . . . . 170
15.2. Procedure 1: CB_COMPOUND - Compound Operations . . . . . 171
15.2.1. Operation 3: CB_GETATTR - Get Attributes . . . . . . . 172
15.2.2. Operation 4: CB_RECALL - Recall an Open Delegation . . 173
16. Security Considerations . . . . . . . . . . . . . . . . . . 174
17. IANA Considerations . . . . . . . . . . . . . . . . . . . . 174
17.1. Named Attribute Definition . . . . . . . . . . . . . . . 174
18. RPC definition file . . . . . . . . . . . . . . . . . . . . 175
19. Bibliography . . . . . . . . . . . . . . . . . . . . . . . 206
20. Authors . . . . . . . . . . . . . . . . . . . . . . . . . . 210
20.1. Editor's Address . . . . . . . . . . . . . . . . . . . . 210
20.2. Authors' Addresses . . . . . . . . . . . . . . . . . . . 210
20.3. Acknowledgements . . . . . . . . . . . . . . . . . . . . 211
21. Full Copyright Statement . . . . . . . . . . . . . . . . . 212
1. Introduction
The NFS version 4 protocol is a further revision of the NFS protocol
defined already by versions 2 [RFC1094] and 3 [RFC1813]. It retains
the essential characteristics of previous versions: design for easy
recovery, independent of transport protocols, operating systems and
filesystems, simplicity, and good performance. The NFS version 4
revision has the following goals:
Shepler, et al. Standards Track [Page 5]
RFC 3010 NFS version 4 Protocol December 2000
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?