这里我们分成两台主机,一台web-html nfs客户端ip为192.168.1.100。一台web-php nfs服务端ip为192.168.1.101。
首先我们要判断是否安装rpc,它主要用于给nfs提供传输。客户端服务端都要装
一般系统都安装好装好了,没有就安装下
|
|
登陆客户端查看 nginx的id号
|
|
登陆服务端,编辑/etc/exports,格式如下
<共享目录> 客户端1(选项) [客户端2(选项) …]
共享目录:NFS共享给客户机的目录。
客户端:网络中可以访问此目录的主机。多个客户端以空格分隔。
选项:设置目录的访问权限、用户映射等,多个选项以逗号分隔。
选项说明
ro:共享目录只读;
rw:共享目录可读可写;
all_squash:所有访问用户都映射为匿名用户或用户组;
no_all_squash(默认):访问用户先与本机用户匹配,匹配失败后再映射为匿名用户或用户组;
root_squash(默认):将来访的root用户映射为匿名用户或用户组;
no_root_squash:来访的root用户保持root帐号权限;
anonuid=<UID>:指定匿名访问用户的本地用户UID,默认为nfsnobody(65534);
anongid=<GID>:指定匿名访问用户的本地用户组GID,默认为nfsnobody(65534);
secure(默认):限制客户端只能从小于1024的tcp/ip端口连接服务器;
insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
async:将数据先保存在内存缓冲区中,必要时才写入磁盘;
wdelay(默认):检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率;
no_wdelay:若有写操作则立即执行,应与sync配合使用;
subtree_check(默认) :若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
no_subtree_check :即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
重启nfs挂载成功
|
|
exportfs
不重启nfs服务应用更新,相关选项如下:
-a 全部挂载或卸载 /etc/exports中的内容
-r 重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
-u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
-v 在export的时候,将详细的信息输出到屏幕上。
showmount -e 登陆服务器端,查看挂载的目录
|
|
如果提示失败,出现下面字样。说明hosts出现问题,查看后发现没有添加服务端的hosts。vim添加下就可以了。
如果还是不行,就关闭iptables或者修改下面介绍的配置文件。
登陆客户端服务器 挂载远程服务器。
|
|
永久挂载和自动挂载
|
|
卸载
|
|
当服务端开启iptables时候,客户端访问超时,这个时候需要修改nfs的配置
我们分析下原理
nfs本身不带网络传输的。都是通过rpc的111端口进行通信。
(1)客户端会向服务器端的RPC(port 111)发出NFS文件存取功能的询问请求。
(2)服务器端找到对应的已注册的NFS,默认nfsd2049 daemon端口后会回报给客户端。
(3)客户端了解正确的端口后,就可以直接与NFS守护(2049)进程来联机
所以111和2049是必须开通的
由于nfs服务需要开启 mountd,nfsd,nlockmgr,portmapper,rquotad这5个服务,需要将这5个服务的端口加到iptables里面
而nfs 和 portmapper两个服务是固定端口的,nfsd为2049,portmapper为111。其他的3个服务是用的随机端口,那就需要
先把这3个服务的端口设置成固定的。
|
|
NFS需要启动的DAEMONS:参考NFS daemons
pc.nfsd:由nfsd的主要功能是处理内核模块。用户空间程序只指定什么样的服务应该侦听套接字的内核,什么NFS版本,它应该支持,并应该使用多少的内核线程。 必须
portmap:处理RPC程序客户端和服务器端的端口对应 必须
rpc.mountd:负责NFS的档案系统,当CLIENT端通过rpc.nfsd登陆SERVER后,对clinet存取server的文件进行一系列的管理 必须
lockd:处理通过RPC包的锁定请求
statd:为nfs锁定服务提供crash恢复功能
rquotad:处理当用户通过nfsmount到远程服务器时的配额
守护进程启动顺序:rpc.portmap, rpc.mountd, rpc.nfsd, rpc.statd, rpc.lockd (新版本会自动跟着nfsd启动起来), rpc.rquotad
其实默认开通2049和111就可以连接上,如果需要开通别的需求,就要固定别的端口了
|
|
|
|
如果服务器突然挂掉,这里我们模拟一下 通过service nfs stop
这个时候客户机通过df -h 或者直接访问目录会卡死
我们可以通过 mount 查询到客户机挂载的地址
通过输入 umont -f /目录 强制卸载
如果一次不行,多执行几遍就好了