**

第一篇、服务端操作

**

一.检查服务器是否已经安装nfs 客户端

rpm -q nfs-utils

nfs-utils-1.0.9-24.el5

如果出现以上结果,表示已经安装好了NFS。

二、安装NFS

yum -y install nfs-utils

三、配置端口(可以忽略):

nfs除了主程序端口2049和rpcbind的端口111是固定以外,还会使用一些随机端口,以下配置将定义这些端口,以便配置防火墙

vim /etc/sysconfig/nfs
 
#追加端口配置
 
MOUNTD_PORT=4001  
STATD_PORT=4002
LOCKD_TCPPORT=4003
LOCKD_UDPPORT=4003
RQUOTAD_PORT=4004

四、配置NFS服务器

vim /etc/exports

打开配置文件后,一般空空如也,自己写,写入以下配置信息:

/home/example/rootfs 192.168.2.*(rw,sync,no_root_squash)

解析:

/home/example/rootfs          -->共享的文件夹路径
      192.168.2.*                   -->允许访问的IP号,当然也可以具体指定一个,比如192.168.2.11
      (rw,sync,no_root_squash)     -->权限等

五、启动/重启NFS服务

不管NFS事先有没有启动,都可以用重启命令,如下:

/sbin/service nfs restart
/etc/init.d/nfs restart    --尝试的时候找不到命令
systemctl start nfs.service  -- 没有试过

六、如果只是修改配置文件可以只是重新加载参数即可

exportfs -r  #重载exports配置
exportfs -v  #查看共享参数

exportfs参数说明:

-a 全部挂载或卸载 /etc/exports中的内容
       -r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
      -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
      -v 输出详细的共享参数

七、查看所有共享的目录

showmount -e 127.0.0.1       --简略信息
cat /var/lib/nfs/etab   --详细信息

八、查看服务端日志(调bug使用)

cat /var/log/messages | grep mount

第二篇、客户端操作

1、直接挂载

mount -t nfs 192.168.2.22:/home/example/rootfs /mnt/nfs

解析:

mount -t nfs            -->挂载命令,表示挂载NFS共享的文件夹
  192.168.2.22:/home/example/rootfs    -->服务器端共享的文件夹路径,格式为 IP:/共享文件夹路径
  /mnt/nfs                  -->映射到本地的文件夹,即客户端开发板上的文件夹。

注:如果输入命令,出现如下错误“svc: failed to register lockdv1 RPC service (errno 111) ”,则改用如下命令:

mount -t nfs -o nolock 192.168.2.22:/home/example/rootfs /mnt/nfs

2、查看挂载情况

df -h

结果:

10.0.3.22:/data/10.0.0.59/dns_data         44T   14T   31T  32% /dist/dnsdata_import/data-bak

  说明: FNS服务端信息, 本地文件路径

3、取消挂载

umount /mnt/test1

说明: umout 本地挂载的路径

第三篇、客户端挂载错误处理

1、客户端没有commont 包

错误信息:

[root@localhost]# mount -t nfs 192.168.0.106:/home/nfs1
mount: wrong fs type, bad option, bad superblock on 192.168.0.106:/home/nfs1,
missing codepage or helper program, or other error
(for several filesystems (e.g. nfs, cifs) you might
need a /sbin/mount. helper program)
In some cases useful info is found in syslog - try
dmesg | tail or so

解决办法:

apt-get install nfs-common
或者
yum install nfs-utils

2、unmatched host

错误信息:

[root@hadoopclient etc]# mount -t nfs 10.0.0.59:/dist/ipip_data/data ./ipip_data/
mount.nfs: access denied by server while mounting 10.0.0.59:/dist/ipip_data/data
检查日志:Mar 27 13:33:58 hadoopclient02 rpc.mountd[8705]: refused mount request from 10.0.0.80 for /dist/ipip_data/data (/dist/ipip_data/data): unmatched host

解决办法:

用 10.0.0.0/16 替代 10.0.* 方式 --(实际使用好使)

网上搜的:
解决方式1、去掉/etc/hosts中的主机名ip
解决方式2、查看客户端挂载的目录不具备读写权限,添加权限即可。
解决方式3、服务器和客户机网段不同引起,修改ip地址,使其同网段即可。
NFS服务器配置参数说明:

ro:共享目录只读
rw:共享目录可读可写
all_squash:所有访问用户都映射为匿名用户或用户组
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组
root_squash(默认):将来访的root用户映射为匿名用户或用户组
no_root_squash:来访的root用户保持root帐号权限
anonuid=:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534)
anongid=:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534)
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器
insecure:允许客户端从大于1024的tcp/ip端口连接服务器
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性
async:将数据先保存在内存缓冲区中,必要时才写入磁盘
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率
no_wdelay:若有写操作则立即执行,应与sync配合使用
subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率