NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;NFS一般用来存储共享视频,图片等静态数据。

 

NFS应用场合:

在生产环境,我们很少使用单机部署应用,因为单机存在单点故障,一旦宕机,将无法为前端业务提供服务,这是客户无法容忍的。 现在提倡的高可用及7*24服务,是我们追求的目标。 对于一些小的应用,双机成为了主流。

我们来看一种简单集群场景, 应用分别部署在A及B上, 前端通过F5或着web服务器访问应用。NFS提供了一种机制,可以让A、B访问C中的一个共享目录,就像是操作本地文件一样。

 

高可用nfs方案 nfs server 高可用_客户端

 

NFS挂载原理:

NFS包括两部分,服务端及客户端 由于NFS服务功能很多,会有很多端口,这些端口还有可能不固定,那么客户端就无法与服务器进行通信,因为程序间通信必须通过端口(tcp/udp都是端到端通信),那么就需要一个中间的桥接机制,RPC进程即充当这样一个角色,RPC的端口是一定的(111),当NFS启动时,会向RPC进行注册, 那么客户端RPC就能与服务器RPC进行通信, 从而进行文件的传输。

当客户端用户打开一个文件或目录时,内核会判断,该文件是本地文件还是远程共享目录文件,如果是远程文件则通过RPC进程访问远程NFS服务端的共享目录,如果是本地文件,则直接打开。为了更好的并发,RPC进程及NFS进程都有多个。

 

高可用nfs方案 nfs server 高可用_服务端_02

 

NFS服务端安装配置:

在服务端server上分别安装nfs-utils、rpcbind包:

 

高可用nfs方案 nfs server 高可用_客户端_03

新建配置文件写入以下内容:

 

高可用nfs方案 nfs server 高可用_共享目录_04

其中,/home/nfstestdir为共享的目录;192.168.100.0/24为客户端的网段。

在服务端server上,创建/home/nfstestdir目录,并给予777权限:

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_05

启动服务并监听端口:

 

高可用nfs方案 nfs server 高可用_客户端_06

启动nfs服务,启动之后查看一下进程有没有问题:

 

高可用nfs方案 nfs server 高可用_共享目录_07

设置开机启动:

 

高可用nfs方案 nfs server 高可用_共享目录_08

 

高可用nfs方案 nfs server 高可用_共享目录_09

 

NFS配置选项:

  •  rw :读写
  •  ro :只读
  •  sync :同时将数据写入到内存和硬盘,保证数据不丢失
  •  async :先将数据保存到内存,再写入到硬盘,这样效率更高,但数据可能丢失
  •  no_root_squash :当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
  •  root_squash :与上面选项相对,客户端上的 root 用户收到约束,被限定成某个普通用户
  •  all_squash :无论NFS客户端以什么用户登录,都映射为NFS服务器的匿名用户
  •  anonuid/anongid :和上面几个选项搭配使用,定义被限定用户的 uid 和 gid


客户端挂载:

在客户端client上安装nfs-utils包:

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_10

在客户端client上设置,查看服务端共享目录:

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_11

在客户端client上挂载NFS,并查看挂载好的共享目录:

 

高可用nfs方案 nfs server 高可用_客户端_12

 

高可用nfs方案 nfs server 高可用_共享目录_13

nfs :挂载的文件类型;

192.168.100.131 :服务端的ip;

/home/nfstestdir :挂载共享目录;

/mnt/ :挂载点。

在客户端client上,在/mnt/目录下创建一个文件,并查看服务端server有没有更新:

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_14

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_15

exportfs命令:

  •  -a:全部挂载或者全部卸载。
  •  -r:重新挂载。
  •  -u:卸载某一个目录。
  •  -v:显示共享目录。

服务端:

 

高可用nfs方案 nfs server 高可用_服务端_16

 

高可用nfs方案 nfs server 高可用_高可用nfs方案_17

客户端:

 

高可用nfs方案 nfs server 高可用_服务端_18

 

高可用nfs方案 nfs server 高可用_服务端_19