1.    NFS简介

NFS(Network FileSystem)是可以通过网络让不同的机器,不同的操作系统彼此共享文件(sharefiles),可以通过NFS挂载远程主机的目录,从而使访问该目录就像访问本地目录一样。所以也可以简单的将它理解为一个文件服务器(FileServer)。

NFS服务能够方便地使各unix-like系统之间实现共享,如果需要在unix-like和windows系统之间共享,那就得使用samba了。

2.    NFS传输

Remote Procedure Call,远程过程调用)服务的portmap映射一个小于1024的随机端口。

        在启动RPC服务之前(比如NFS),需要先启动portmap服务,以方便分配端口。

3.    NFS配置-Server端

        a.    安装NFS相关软件包 

# apt-get install nfs-kernel-server

        b.    相关配置


# vi /etc/default/nfs-kernel-server 
  NEED_SVCGSSD=no #并不打算启用nfsv4安全配置,如果开启,则客户端也需要开启
# vi /etc/default/nfs-common
  NEED_GSSD=no    #no is default
  NEED_IDMAPD=yes #打开ID映射用于解决服务器端UID与客户机UID不同,而无法访问资源的情况。通过UID映射,只需要相同的用户名即可
# vi /etc/idmapd.conf
 [Mapping]
  Nobody-User = nobody
  Nobody-Group = nogroup

        c.   配置 /etc/exports

# vi /etc/exports
/opt/chip        *(rw,sync,no_root_squash,no_subtree_check,fsid=0)#参数一:表示服务端即将挂的目录;参数二:表示能够挂载的客户端,可以使ip段,具体IP,或任意客户端*;参数三:表示对应的权限

        d.    重启NFS


#/etc/init.d/nfs-kernel-server  restart
#exportfs -v #显示挂载内容
#exportfs -r #reload新增nfs

4.    NFS配置-客户端


        a.    安装相关软件包

# apt-get install nfs-common

        b.    客户端配置


# vi /etc/default/nfs-common 
  NEED_GSSD=no #需要与server端配置一样
  NEED_IDMAPD=yes

        c.    挂载


#vi /etc/fstab
nfsserver端IP:/ /../..客户端挂载目录     nfs4    rw,_netdev,auto,intr    0   0
#mount -a #如果挂载失败,则执行以下步骤
#modprobe nfs #加载nfs模块
#mount -a

5.    NFS配置中涉及到参数


ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID

到此,NFS简单配置基本完成!