Internet Engineering Task Force (IETF) S. Shepler, Ed. Request for Comments: 5661 Storspeed, Inc. Category: Standards Track M. Eisler, Ed. ISSN: 2070-1721 D. Noveck, Ed. NetApp January 2010 Network File System (NFS) Version 4 Minor Version 1 ProtocolAbstract
This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 3530) and protocol extensions made subsequently. Major extensions introduced in NFS version 4 minor version 1 include Sessions, Directory Delegations, and parallel NFS (pNFS). NFS version 4 minor version 1 has no dependencies on NFS version 4 minor version 0, and it is considered a separate protocol. Thus, this document neither updates nor obsoletes RFC 3530. NFS minor version 1 is deemed superior to NFS minor version 0 with no loss of functionality, and its use is preferred over version 0. Both NFS minor versions 0 and 1 can be used simultaneously on the same network, between the same client and server. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc5661.
Copyright Notice Copyright (c) 2010 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents
1. Introduction ....................................................9 1.1. The NFS Version 4 Minor Version 1 Protocol .................9 1.2. Requirements Language ......................................9 1.3. Scope of This Document .....................................9 1.4. NFSv4 Goals ...............................................10 1.5. NFSv4.1 Goals .............................................10 1.6. General Definitions .......................................11 1.7. Overview of NFSv4.1 Features ..............................13 1.8. Differences from NFSv4.0 ..................................17 2. Core Infrastructure ............................................18 2.1. Introduction ..............................................18 2.2. RPC and XDR ...............................................19 2.3. COMPOUND and CB_COMPOUND ..................................22 2.4. Client Identifiers and Client Owners ......................23 2.5. Server Owners .............................................28 2.6. Security Service Negotiation ..............................29 2.7. Minor Versioning ..........................................34 2.8. Non-RPC-Based Security Services ...........................37 2.9. Transport Layers ..........................................37 2.10. Session ..................................................40 3. Protocol Constants and Data Types ..............................86 3.1. Basic Constants ...........................................86 3.2. Basic Data Types ..........................................87 3.3. Structured Data Types .....................................89 4. Filehandles ....................................................97 4.1. Obtaining the First Filehandle ............................98 4.2. Filehandle Types ..........................................99 4.3. One Method of Constructing a Volatile Filehandle .........101 4.4. Client Recovery from Filehandle Expiration ...............102 5. File Attributes ...............................................103 5.1. REQUIRED Attributes ......................................104 5.2. RECOMMENDED Attributes ...................................104 5.3. Named Attributes .........................................105 5.4. Classification of Attributes .............................106 5.5. Set-Only and Get-Only Attributes .........................107 5.6. REQUIRED Attributes - List and Definition References .....107 5.7. RECOMMENDED Attributes - List and Definition References ..108 5.8. Attribute Definitions ....................................110 5.9. Interpreting owner and owner_group .......................119 5.10. Character Case Attributes ...............................121 5.11. Directory Notification Attributes .......................121 5.12. pNFS Attribute Definitions ..............................122 5.13. Retention Attributes ....................................123 6. Access Control Attributes .....................................126 6.1. Goals ....................................................126 6.2. File Attributes Discussion ...............................128
6.3. Common Methods ...........................................144
6.4. Requirements .............................................147
7. Single-Server Namespace .......................................153
7.1. Server Exports ...........................................153
7.2. Browsing Exports .........................................153
7.3. Server Pseudo File System ................................154
7.4. Multiple Roots ...........................................155
7.5. Filehandle Volatility ....................................155
7.6. Exported Root ............................................155
7.7. Mount Point Crossing .....................................156
7.8. Security Policy and Namespace Presentation ...............156
8. State Management ..............................................157
8.1. Client and Session ID ....................................158
8.2. Stateid Definition .......................................158
8.3. Lease Renewal ............................................167
8.4. Crash Recovery ...........................................170
8.5. Server Revocation of Locks ...............................181
8.6. Short and Long Leases ....................................182
8.7. Clocks, Propagation Delay, and Calculating Lease
Expiration ...............................................182
8.8. Obsolete Locking Infrastructure from NFSv4.0 .............183
9. File Locking and Share Reservations ...........................184
9.1. Opens and Byte-Range Locks ...............................184
9.2. Lock Ranges ..............................................188
9.3. Upgrading and Downgrading Locks ..........................188
9.4. Stateid Seqid Values and Byte-Range Locks ................189
9.5. Issues with Multiple Open-Owners .........................189
9.6. Blocking Locks ...........................................190
9.7. Share Reservations .......................................191
9.8. OPEN/CLOSE Operations ....................................192
9.9. Open Upgrade and Downgrade ...............................192
9.10. Parallel OPENs ..........................................193
9.11. Reclaim of Open and Byte-Range Locks ....................194
10. Client-Side Caching ..........................................194
10.1. Performance Challenges for Client-Side Caching ..........195
10.2. Delegation and Callbacks ................................196
10.3. Data Caching ............................................200
10.4. Open Delegation .........................................205
10.5. Data Caching and Revocation .............................216
10.6. Attribute Caching .......................................218
10.7. Data and Metadata Caching and Memory Mapped Files .......220
10.8. Name and Directory Caching without Directory
Delegations .............................................222
10.9. Directory Delegations ...................................225
11. Multi-Server Namespace .......................................228
11.1. Location Attributes .....................................228
11.2. File System Presence or Absence .........................229
11.3. Getting Attributes for an Absent File System ............230
11.4. Uses of Location Information ............................232
11.5. Location Entries and Server Identity ....................236
11.6. Additional Client-Side Considerations ...................237
11.7. Effecting File System Transitions .......................238
11.8. Effecting File System Referrals .........................251
11.9. The Attribute fs_locations ..............................258
11.10. The Attribute fs_locations_info ........................261
11.11. The Attribute fs_status ................................273
12. Parallel NFS (pNFS) ..........................................277
12.1. Introduction ............................................277
12.2. pNFS Definitions ........................................278
12.3. pNFS Operations .........................................284
12.4. pNFS Attributes .........................................285
12.5. Layout Semantics ........................................285
12.6. pNFS Mechanics ..........................................300
12.7. Recovery ................................................302
12.8. Metadata and Storage Device Roles .......................307
12.9. Security Considerations for pNFS ........................307
13. NFSv4.1 as a Storage Protocol in pNFS: the File Layout Type ..309
13.1. Client ID and Session Considerations ....................309
13.2. File Layout Definitions .................................312
13.3. File Layout Data Types ..................................312
13.4. Interpreting the File Layout ............................317
13.5. Data Server Multipathing ................................324
13.6. Operations Sent to NFSv4.1 Data Servers .................325
13.7. COMMIT through Metadata Server ..........................327
13.8. The Layout Iomode .......................................328
13.9. Metadata and Data Server State Coordination .............329
13.10. Data Server Component File Size ........................332
13.11. Layout Revocation and Fencing ..........................333
13.12. Security Considerations for the File Layout Type .......334
14. Internationalization .........................................334
14.1. Stringprep profile for the utf8str_cs type ..............336
14.2. Stringprep profile for the utf8str_cis type .............337
14.3. Stringprep profile for the utf8str_mixed type ...........338
14.4. UTF-8 Capabilities ......................................340
14.5. UTF-8 Related Errors ....................................340
15. Error Values .................................................341
15.1. Error Definitions .......................................341
15.2. Operations and Their Valid Errors .......................361
15.3. Callback Operations and Their Valid Errors ..............376
15.4. Errors and the Operations That Use Them .................379
16. NFSv4.1 Procedures ...........................................391
16.1. Procedure 0: NULL - No Operation ........................392
16.2. Procedure 1: COMPOUND - Compound Operations .............392
17. Operations: REQUIRED, RECOMMENDED, or OPTIONAL ...............403
18. NFSv4.1 Operations ...........................................407
18.1. Operation 3: ACCESS - Check Access Rights ...............407
18.2. Operation 4: CLOSE - Close File .........................413
18.3. Operation 5: COMMIT - Commit Cached Data ................414
18.4. Operation 6: CREATE - Create a Non-Regular File Object ..417
18.5. Operation 7: DELEGPURGE - Purge Delegations
Awaiting Recovery .......................................419
18.6. Operation 8: DELEGRETURN - Return Delegation ............420
18.7. Operation 9: GETATTR - Get Attributes ...................421
18.8. Operation 10: GETFH - Get Current Filehandle ............423
18.9. Operation 11: LINK - Create Link to a File ..............424
18.10. Operation 12: LOCK - Create Lock .......................426
18.11. Operation 13: LOCKT - Test for Lock ....................430
18.12. Operation 14: LOCKU - Unlock File ......................432
18.13. Operation 15: LOOKUP - Lookup Filename .................433
18.14. Operation 16: LOOKUPP - Lookup Parent Directory ........435
18.15. Operation 17: NVERIFY - Verify Difference in
Attributes .............................................436
18.16. Operation 18: OPEN - Open a Regular File ...............437
18.17. Operation 19: OPENATTR - Open Named Attribute
Directory ..............................................458
18.18. Operation 21: OPEN_DOWNGRADE - Reduce Open File
Access .................................................459
18.19. Operation 22: PUTFH - Set Current Filehandle ...........461
18.20. Operation 23: PUTPUBFH - Set Public Filehandle .........461
18.21. Operation 24: PUTROOTFH - Set Root Filehandle ..........463
18.22. Operation 25: READ - Read from File ....................464
18.23. Operation 26: READDIR - Read Directory .................466
18.24. Operation 27: READLINK - Read Symbolic Link ............469
18.25. Operation 28: REMOVE - Remove File System Object .......470
18.26. Operation 29: RENAME - Rename Directory Entry ..........473
18.27. Operation 31: RESTOREFH - Restore Saved Filehandle .....477
18.28. Operation 32: SAVEFH - Save Current Filehandle .........478
18.29. Operation 33: SECINFO - Obtain Available Security ......479
18.30. Operation 34: SETATTR - Set Attributes .................482
18.31. Operation 37: VERIFY - Verify Same Attributes ..........485
18.32. Operation 38: WRITE - Write to File ....................486
18.33. Operation 40: BACKCHANNEL_CTL - Backchannel Control ....491
18.34. Operation 41: BIND_CONN_TO_SESSION - Associate
Connection with Session ................................492
18.35. Operation 42: EXCHANGE_ID - Instantiate Client ID ......495
18.36. Operation 43: CREATE_SESSION - Create New
Session and Confirm Client ID ..........................513
18.37. Operation 44: DESTROY_SESSION - Destroy a Session ......523
18.38. Operation 45: FREE_STATEID - Free Stateid with
No Locks ...............................................525
18.39. Operation 46: GET_DIR_DELEGATION - Get a
Directory Delegation ...................................526
18.40. Operation 47: GETDEVICEINFO - Get Device Information ...530
18.41. Operation 48: GETDEVICELIST - Get All Device
Mappings for a File System .............................533
18.42. Operation 49: LAYOUTCOMMIT - Commit Writes Made
Using a Layout .........................................534
18.43. Operation 50: LAYOUTGET - Get Layout Information .......538
18.44. Operation 51: LAYOUTRETURN - Release Layout
Information ............................................547
18.45. Operation 52: SECINFO_NO_NAME - Get Security on
Unnamed Object .........................................552
18.46. Operation 53: SEQUENCE - Supply Per-Procedure
Sequencing and Control .................................553
18.47. Operation 54: SET_SSV - Update SSV for a Client ID .....559
18.48. Operation 55: TEST_STATEID - Test Stateids for
Validity ...............................................561
18.49. Operation 56: WANT_DELEGATION - Request Delegation .....563
18.50. Operation 57: DESTROY_CLIENTID - Destroy a Client ID ...566
18.51. Operation 58: RECLAIM_COMPLETE - Indicates
Reclaims Finished ......................................567
18.52. Operation 10044: ILLEGAL - Illegal Operation ...........569
19. NFSv4.1 Callback Procedures ..................................570
19.1. Procedure 0: CB_NULL - No Operation .....................570
19.2. Procedure 1: CB_COMPOUND - Compound Operations ..........571
20. NFSv4.1 Callback Operations ..................................574
20.1. Operation 3: CB_GETATTR - Get Attributes ................574
20.2. Operation 4: CB_RECALL - Recall a Delegation ............575
20.3. Operation 5: CB_LAYOUTRECALL - Recall Layout
from Client .............................................576
20.4. Operation 6: CB_NOTIFY - Notify Client of
Directory Changes .......................................580
20.5. Operation 7: CB_PUSH_DELEG - Offer Previously
Requested Delegation to Client ..........................583
20.6. Operation 8: CB_RECALL_ANY - Keep Any N
Recallable Objects ......................................584
20.7. Operation 9: CB_RECALLABLE_OBJ_AVAIL - Signal
Resources for Recallable Objects ........................588
20.8. Operation 10: CB_RECALL_SLOT - Change Flow
Control Limits ..........................................588
20.9. Operation 11: CB_SEQUENCE - Supply Backchannel
Sequencing and Control ..................................589
20.10. Operation 12: CB_WANTS_CANCELLED - Cancel
Pending Delegation Wants ...............................592
20.11. Operation 13: CB_NOTIFY_LOCK - Notify Client of
Possible Lock Availability .............................593
20.12. Operation 14: CB_NOTIFY_DEVICEID - Notify
Client of Device ID Changes ............................594
20.13. Operation 10044: CB_ILLEGAL - Illegal Callback
Operation ..............................................596
21. Security Considerations ......................................597
22. IANA Considerations ..........................................598
22.1. Named Attribute Definitions .............................598
22.2. Device ID Notifications .................................600
22.3. Object Recall Types .....................................601
22.4. Layout Types ............................................603
22.5. Path Variable Definitions ...............................606
23. References ...................................................609
23.1. Normative References ....................................609
23.2. Informative References ..................................612
Appendix A. Acknowledgments ....................................615