平台:fedora21 x86_64
一、NFS服务简介
NFS 是Network File
System的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布。功能是通过网络让不同的机器、不同的操
作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法。
NFS
的基本原则是“容许不同的客户端及服务端通过一组RPC分享相同的文件系统”,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
NFS在文件传送或信息传送过程中依赖于RPC协议。RPC,远程过程调用 (Remote Procedure Call)
是能使客户端执行其他系统中程序的一种机制。NFS本身是没有提供信息传输的协议和功能的,但NFS却能让我们通过网络进行资料的分享,这是因为NFS使
用了一些其它的传输协议。而这些传输协议用到这个RPC功能的。可以说NFS本身就是使用RPC的一个程序。或者说NFS也是一个RPC
SERVER。所以只要用到NFS的地方都要启动RPC服务,不论是NFS SERVER或者NFS
CLIENT。这样SERVER和CLIENT才能通过RPC来实现PROGRAM
PORT的对应。可以这么理解RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。
二,检查系统是否安装NFS服务 rpm -qa | grep nfs
;若没有安装则安装该服务 sudo yum install nfs-utils。启动nfs服务:sudo systemctl
start nfs 安装该服务后进行基本配置,打开/etc/exports文件,若无则vi
/etc/exports新建一个,配置说明如下:
格式:<共享目录> 客户端1(选项)
[客户端2(选项) ...]
共享目录:如/opt/nfs
为nfs服务器端共享出去的目录
客户端:被允许访问该共享目录的客户端,可以是客户机的ip地址,也可以是一个ip网段,如:192.168.1.*
多个客户端用空格分开。
选项:是一系列参数,多个参数用逗号分开,如:
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服务器也不检查其父目录的权限,这样可以提高效率;
我个人简单的配置内容是 /opt/nfs
192.168.1.*(rw,sync,insecure)
三,nfs相关命令
1、exportfs
不重启nfs服务应用更新,相关选项如下:
-a 全部挂载或卸载
/etc/exports中的内容
-r 重新读取/etc/exports 中的信息
,并同步更新/etc/exports、/var/lib/nfs/xtab
-u
卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v
在export的时候,将详细的信息输出到屏幕上。
2、rpcinfo
查看rpc服务注册情况。
相关选项:
-p 显示所有的端口与程序信息。
示例:
rpcinfo -p
localhost #列出本机的RPC注册状况。
3、showmount
查询nfs共享目录信息,相关选项如下:
-a 显示已经于客户端连接上的目录信息
-e IP或者hostname 显示此IP地址分享出来的目录
四,客户端挂载
格式:mount -t nfs <主机ip:共享目录>
<挂在目录> -o nolock
其中最后一个参数涉及文件锁,具体含义我在网上也没找到,但是在挂载时,如果没有该参数会导致挂载失败
五,nfs的防火墙设置
进行以上所有配置后,如果挂载仍提示mount: RPC: Unable to receive; errno = No route to
host 说明该服务被系统自带的防火墙阻止,最简单的解决办法是关闭防火墙 sudo
systemctl stop firewalld
另一种解决办法是在firewalld-config中允许nfs服务,打开firewalld的图形界面
其中Runtime为在该次设置起效,下次开机无效;Permanent是永久性的有效。我这里选择Permanent,然后在Service中把
nfs mountd rpc-bind 三项打上对号即可。然后退出,在客户端就可以正常挂载了。
阅读(2082) | 评论(0) | 转发(0) |