我的博客已迁移到xdoujiang.com请去那边和我交流
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,
它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,
本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

一、基础环境
1)服务端10.1.10.117 erh0 7.8(debian) 3.2.0-4-amd64
2)客户端10.1.10.160 eth0 5.0.10(debian) 2.6.26-2-amd64

二、安装nfs
1、安装nfs服务端
apt-get -y install nfs-kernel-server

2、创建共享目录
mkdir /opt/nfsdata -p

3、修改配置
cat /etc/exports
/opt/nfsdata 10.1.10.117(rw,async,no_root_squash) 10.1.10.160(rw,async,no_root_squash)

4、参数说明
ro                #只读访问
rw                #读写访问
sync             #将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async             #将数据先保存在内存缓冲区中,必要时才写入磁盘
secure            #限制客户端只能从小于1024的tcp/ip端口连接nfs服务器
insecure          #允许客户端从大于1024的tcp/ip端口连接服务器
wdelay            #检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率
no_wdelay         #若有写操作则立即执行,应与sync配合使用
hide              #在NFS共享目录中不共享其子目录
no_hide           #共享NFS目录的子目录
subtree_check     #若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check  #即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率
all_squash        #将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody)
no_all_squash     #与all_squash取反
root_squash       #将root用户及所属组都映射为匿名用户或用户组
no_root_squash    #与rootsquash取反
anonuid=xxx       #将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx)
anongid=xxx       #将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx)

5、重启服务
[ ok ] Stopping NFS kernel daemon: mountd nfsd.
[ ok ] Unexporting directories for NFS kernel daemon....
[....] Exporting directories for NFS kernel daemon...exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "10.1.10.117:/opt/nfsdata".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "10.1.10.160:/opt/nfsdata".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x
. ok 
[ ok ] Starting NFS kernel daemon: nfsd mountd.

6、查看共享具体信息
cat /var/lib/nfs/etab
/opt/nfsdata    10.1.10.117(rw,async,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)
/opt/nfsdata    10.1.10.160(rw,async,wdelay,hide,nocrossmnt,secure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534)

7、使用showmount命令查看共享目录
showmount -e
Export list for debian:
/opt/nfsdata 10.1.10.160,10.1.10.117

8、使用rpcinfo命令查看监听的端口
rpcinfo -p 10.1.10.117
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  56564  status
    100024    1   tcp  46588  status
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100227    2   tcp   2049
    100227    3   tcp   2049
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100227    2   udp   2049
    100227    3   udp   2049
    100021    1   udp  41855  nlockmgr
    100021    3   udp  41855  nlockmgr
    100021    4   udp  41855  nlockmgr
    100021    1   tcp  38046  nlockmgr
    100021    3   tcp  38046  nlockmgr
    100021    4   tcp  38046  nlockmgr
    100005    1   udp  36619  mountd
    100005    1   tcp  37282  mountd
    100005    2   udp  54466  mountd
    100005    2   tcp  57293  mountd
    100005    3   udp  52004  mountd
    100005    3   tcp  40933  mountd

9、查看到相应的服务都默认开机启动了(安装时候自动加入的)
ll /etc/rc2.d/
lrwxrwxrwx 1 root root  17 Aug  4 14:52 S13rpcbind -> ../init.d/rpcbind
lrwxrwxrwx 1 root root  20 Aug  4 14:52 S14nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root  27 Aug  4 14:52 S16nfs-kernel-server -> ../init.d/nfs-kernel-server    
    
10、测试
1)本机挂载
mount -t nfs 10.1.10.117:/opt/nfsdata/ /mnt
2)查看
df -Th
Filesystem                                             Type      Size  Used Avail Use% Mounted on
rootfs                                                 rootfs    9.2G  703M  8.1G   8% /
udev                                                   devtmpfs   10M     0   10M   0% /dev
tmpfs                                                  tmpfs      24M  236K   23M   1% /run
/dev/disk/by-uuid/62f9f2a1-249c-41fe-b639-c5137c10bf83 ext4      9.2G  703M  8.1G   8% /
tmpfs                                                  tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                                                  tmpfs     810M     0  810M   0% /run/shm
/dev/sda5                                              ext4       27G  172M   26G   1% /opt
10.1.10.117:/opt/nfsdata                               nfs4       27G  172M   26G   1% /mnt

三、客户端挂载(远程)10.1.10.160
1、安装nfs客户端
apt-get -y install nfs-common

2、查看10.1.10.117共享目录信息
showmount -e 10.1.10.117
Export list for 10.1.10.117:
/opt/nfsdata 10.1.10.160,10.1.10.117

3、再挂载
mount -t nfs 10.1.10.117:/opt/nfsdata/ /mnt

4、查看
[email protected]:~# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3    9.2G  801M  8.0G   9% /
tmpfs        tmpfs    124M     0  124M   0% /lib/init/rw
udev         tmpfs     10M  700K  9.4M   7% /dev
tmpfs        tmpfs    124M     0  124M   0% /dev/shm
/dev/sda5     ext3     17G  487M   16G   3% /opt
10.1.10.117:/opt/nfsdata/
               nfs     27G  172M   26G   1% /mnt

5、添加/etc/fstab开机自动挂载
1)在/etc/fstab最后1行添加
10.1.10.117:/opt/nfsdata /mnt nfs defaults 0 0
2)使用mount -a检查
[email protected]:~# df -Th
Filesystem    Type    Size  Used Avail Use% Mounted on
/dev/sda1     ext3    9.2G  802M  8.0G   9% /
tmpfs        tmpfs    124M     0  124M   0% /lib/init/rw
udev         tmpfs     10M  700K  9.4M   7% /dev
tmpfs        tmpfs    124M     0  124M   0% /dev/shm
/dev/sda5     ext3     17G  487M   16G   3% /opt
10.1.10.117:/opt/nfsdata
               nfs     27G  172M   26G   1% /mnt
               
四、服务端查看
1、在服务端上能看到客户端10.1.10.160已连接上来了
showmount -a
All mount points on debian:
10.1.10.160:/opt/nfsdata

2、能看到10.1.10.160挂载刮来的信息
cat /var/lib/nfs/rmtab 
10.1.10.160:/opt/nfsdata:0x00000001

五、还有exportfs nfsstat等命令,暂时没用到,可以自行体验下

六、参考文章
http://nfs.sourceforge.net/