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