1 ========== 2 NFS Client 3 ========== 4 5 The NFS client 6 ============== 7 8 The NFS version 2 protocol was first documente 9 Since then two more major releases of NFS have 10 being documented in RFC1813 (June 1995), and N 11 2003). 12 13 The Linux NFS client currently supports all th 14 and work is in progress on adding support for 15 protocol. 16 17 The purpose of this document is to provide inf 18 special features of the NFS client that can be 19 administrators. 20 21 22 The nfs4_unique_id parameter 23 ============================ 24 25 NFSv4 requires clients to identify themselves 26 string. File open and lock state shared betwe 27 is associated with this identity. To support 28 and transparent state migration, this identity 29 across client reboots. 30 31 Without any other intervention, the Linux clie 32 the local system's node name. System administ 33 take care to ensure that node names are fully 34 over the lifetime of a client system. Node na 35 administrative requirements that require parti 36 work well as part of an nfs_client_id4 string. 37 38 The nfs.nfs4_unique_id boot parameter specifie 39 used together with a system's node name when 40 a server. Thus, if the system's node name is 41 nfs.nfs4_unique_id can help prevent collisions 42 43 The nfs.nfs4_unique_id string is typically a U 44 anything that is believed to be unique across 45 nfs4_unique_id string should be chosen when a 46 just as a system's root file system gets a fre 47 install time. 48 49 The string should remain fixed for the lifetim 50 changed safely if care is taken that the clien 51 outstanding NFSv4 state has expired, to preven 52 53 This string can be stored in an NFS client's g 54 via a net boot facility such as PXE. It may a 55 module parameter. 56 57 This uniquifier string will be the same for al 58 containers unless it is overridden by a value 59 /sys/fs/nfs/net/nfs_client/identifier which wi 60 namespace of the process which writes. 61 62 63 The DNS resolver 64 ================ 65 66 NFSv4 allows for one server to refer the NFS c 67 migrated onto another server by means of the s 68 attribute. See `RFC3530 Section 6: Filesystem 69 `Implementation Guide for Referrals in NFSv4`_ 70 71 .. _RFC3530 Section 6\: Filesystem Migration a 72 .. _Implementation Guide for Referrals in NFSv 73 74 The fs_locations information can take the form 75 a path, or a DNS hostname and a path. The latt 76 do a DNS lookup in order to mount the new volu 77 upcall to allow userland to provide this servi 78 79 Assuming that the user has the 'rpc_pipefs' fi 80 /var/lib/nfs/rpc_pipefs, the upcall consists o 81 82 (1) The process checks the dns_resolve cach 83 valid entry. If so, it returns that ent 84 85 (2) If no valid entry exists, the helper sc 86 (may be changed using the 'nfs.cache_ge 87 is run, with two arguments: 88 - the cache name, "dns_resolve" 89 - the hostname to resolve 90 91 (3) After looking up the corresponding ip a 92 writes the result into the rpc_pipefs p 93 '/var/lib/nfs/rpc_pipefs/cache/dns_reso 94 in the following (text) format: 95 96 "<ip address> <hostname> <ttl> 97 98 Where <ip address> is in the usual IPv4 99 (ffee:ddcc:bbaa:9988:7766:5544:3322:110 100 <hostname> is identical to the second a 101 script, and <ttl> is the 'time to live' 102 units of seconds). 103 104 .. note:: 105 If <ip address> is invalid, say th 106 entry is created, which will cause 107 as having no valid DNS translation 108 109 110 111 112 A basic sample /sbin/nfs_cache_getent 113 ===================================== 114 .. code-block:: sh 115 116 #!/bin/bash 117 # 118 ttl=600 119 # 120 cut=/usr/bin/cut 121 getent=/usr/bin/getent 122 rpc_pipefs=/var/lib/nfs/rpc_pipefs 123 # 124 die() 125 { 126 echo "Usage: $0 cache_name entry_name" 127 exit 1 128 } 129 130 [ $# -lt 2 ] && die 131 cachename="$1" 132 cache_path=${rpc_pipefs}/cache/${cachename 133 134 case "${cachename}" in 135 dns_resolve) 136 name="$2" 137 result="$(${getent} hosts ${name} 138 [ -z "${result}" ] && result="0" 139 ;; 140 *) 141 die 142 ;; 143 esac 144 echo "${result} ${name} ${ttl}" >${cache_p
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.