NFS

NFS的工作流程原理

1)首先用户访问网站程序,由程序在NFS客户端上发出存取NFS文件的请求,这时NFS客户端(即执行程序的服务器)的RPC服务(rpcbind服务)就会通过网络向NFS服务器端的RPC服务(rpcbind服务)的111端口发出NFS文件存取功能的询问请求。

2)NFS服务端的RPC服务(rpcbind服务)找到对应的已注册的NFS端口后,通知NFS客户端的RPC服务(rpcbind服务)

3)此时NFS客户端获取到正确的端口,并与NFS daemon联机存取数据

4)NFS客户端把数据存取成功后,返回给前端访问程序,告知给用户存取结果,作为网站用户,就完成了一次存取操作。

因为NFS的各项功能都需要向RPC服务(rpcbind服务)注册,所以只有RPC服务(rpcbind服务)才能获取到NFS服务的各项功能对应的端口号(port number),PID,NFS在主机所监听的IP等信息,而NFS客户端也只能通过向RPC服务(rpcbind服务)询问才能找到正确的端口。也就是说,NFS需要有RPC服务(rpcbind服务)的协助才能成功对外提供服务。从上面的描述,我们不难推断,无论是NFS客户端还是NFS服务器端,当要使用NFS时,都需要首先启动RPC服务(rpcbind服务),NFS服务必须在RPC服务启动之后启动,客户端无需启动NFS服务,但需要启动RPC服务。

 

在企业工作场景,一般来说,NFS服务器共享的只是普通静态数据(图片,附件,视频),不需要执行suid,exec等权限,挂载的这个文件系统只能作为数据存取之用,无法执行程序,对于客户端来讲增加了安全性,例如:很多木马篡改站点文件都是由上传入口上传的程序到存储目录,然后执行的。

因此在挂载的时候,用下面的命令很有必要:

mount -t nfs -o nosuid,noexec,nodev,rw 172.16.1.31:/data /mnt

下面介绍几个在企业生产环境下,NFS性能优化挂载的例子。

1)禁止更新目录及文件时间戳挂载,命令如下:

mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt

2)安全加优化的挂载方式如下:

mount -t nfs -o nosuid,noexec,nodev,noatime,nodiratime,intr,rsize=131072,wsize=131072 172.16.1.31:/data /mnt

3)默认的挂载方式如下:

mount -t nfs 172.16.1.31:/data /mnt

如果是本地文件系统,使用如下命令:

mount /dev/sdb1 /mnt -o defaults,async,noatime,data=writeback,barrier=0

 

配置NFS服务端

  NFS服务的默认配置文件路径为:/etc/exports,并且默认是空的。

  修改配置文件以后,必须重启nfs服务

 

  给共享目录更改属主属组为nfsnobady

  进行本地挂载测试

  进行文件写入测试

配置NFS客户端

  客户端必须安装nfs-utils软件(不安装则不能挂载nfs共享目录

    检查远端showmount

    客户端挂载

    进行文件读写及同步测试

    配置开机自动挂载nfs共享目录(/etc/fstab)

注意:

  • fstab会优先于网络被Linux系统加载。网络没启动时执行fstab会导致连不上NFS服务器端,无法实现开机挂载。而且,即使是本地的文件系统,也要注意,fstab最后两列要设置0 0.否则有可能导致无法启动服务器的问题。
  • 因此,nfs网络文件系统最好不要放到fstab里实现开机挂载。
  • 但是,如果是在开机自启动服务里设置并启动了netfs服务,放入fstab里也是可以开机挂载的。

实践一:

题目:共享/data 目录给10.0.0.0/24整个网段可读可写。

    执行:vim /etc/export

       /data 10.0.0.0/24(rw,rsync)

实践二:
题目:共享下面两个目录: 
   /app/w :要求可读可写,同步数据,所有用户压缩为匿名用户 
   /app/r:要求只读,同步数据,所有用户都压缩为匿名用户

   客户端上面的要求: 
   backup服务器,把nfs服务器的/app/r挂载到/data/r

   web01服务器,把nfs服务器的/app/w挂载到/data/w

 

题目:

1)NFS客户端挂载后,往共享目录写入数据时卡住了
2)NFS服务端,重启restart服务,客户端如果写入数据卡住了。

解答:
1,nfs服务端重启之后,共享文件夹进入grace time(无敌时间)
2,客户端在服务端重启后写入数据大概要等90秒
3,nfs配置文件:/etc/sysconfig/nfs

题目:

NFS客户端实现fstab开机自启动挂载

在/etc/fstab中配置了nfs开机自动挂载,结果无法开机自动挂载nfs

解答:

1,nfs客户端挂载命令放在/etc/rc.local实现自动挂载
2,开机自启动netfs服务,然后才能实现fstab的开机自动挂载nfs文件系统(linux开机时在加载网络之前就会加载/etc/fstab)

fstab误操作导致无法开机

1,fstab文件被错误修改,导致在开机启动linux时候出现错误,提示让你恢复系统设置。

1)开机时出现错误提示

2)输入root用户密码后,进入到用户操作界面

 

3)打开vim /etc/fstab 文件,我们发现fstab文件是只读的。也就是说目前只能看不能改。

 

4)退出/etc/fstab。在命令行输入命令

   mount -o remount,rw / 该命令的意思是将整个根目录以可读可写(rw)的方式重新挂载一遍remount

5)我们再打开/etc/fstab 就会发现只读模式没了

 

6)赶紧修改fstab然后重启服务器。

2,光盘救援模式恢复(用linux光盘修复系统)

1)调整开机bios设置光盘启动,然后挂载光盘

 

2)重启系统,进入光盘救援模式

 

3)一路回车,不加在网络模式

 

4)一路回车,选择第一个

 

进入这个页面

 

5)输入命令

 

posted @ 2018-11-23 20:24  mashuang  阅读(337)  评论(0编辑  收藏  举报