NFS介绍,NFS服务端安装配置,NFS配置选项

2020-09-23 11:16:55 浏览数 (1)

笔记内容:

  • 14.1 NFS介绍
  • 14.2 NFS服务端安装配置
  • 14.3 NFS配置选项

笔记日期:2017-11-01

14.1 NFS介绍

NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

NFS可以把A、B、C机器之间的文件数据进行共享,例如用户上传了一个文件到A机器上,用户同样的可以在B或C机器上访问到上传的文件,不一定需要在A机器上才能访问,这就是NFS实现的功能。而且用户如果在A机器上对该文件更新或修改了,那么其他的机器都会进行同步。

从上图可以看到服务端需要有一个NFS服务和一个RPC服务,而客户端则只需要一个RPC服务,真正实现数据传输的是RPC服务,NFS服务是不监听任何端口的,RPC服务则默认监听111端口,所以NFS服务是需要借助RPC协议来进行通信的。

14.2 NFS服务端安装配置

NFS大致介绍完了,现在就是尝试安装NFS,首先要准备两台机器,一个当服务端一个当客户端,我这里使用的是两台虚拟机来做实验:

  1. 服务端需要安装nfs-utils和rpcbind包,安装命令:

yum install -y nfs-utils rpcbind

2. 客户端需要安装nfs-utils包,安装命令:

yum install -y nfs-utils

  1. 在服务端的/etc/exports文件中加入如下内容:

/home/nfstestdir

192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

ip可以根据实际情况自定义,我这里只是给出一个模板

4. 创建nfstestdir目录:

mkdir /home/nfstestdir

  1. 把目录设置为777权限:

chmod 777 /home/nfstestdir

  1. 查看两台机器有没有监听111端口:

一般来讲安装完包之后就会自动启动服务并监听端口的,如果没有启动的话,就手动启动一下,命令如下:

systemctl start rpcbind

启动之后查看一下进程是否如下:

  1. 启动nfs服务:

systemctl start nfs

启动之后查看一下进程有没有问题:

在启动nfs时会自动帮你启动rpc相关的一些服务:

以上这些都是与nfs的关联服务,如果没有以上这些服务是无法正常使用nfs的。

  1. 以下两个命令可以让rpcbind和nfs服务开机启动:

systemctl enable rpcbind

systemctl enable nfs

14.3 NFS配置选项

刚刚在/etc/exports文件中加入了如下内容:

192.168.133.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

现在介绍一下这段内容的含义,这是一段nfs的配置选项,前面那段ip就不需要多解释了,后面那一段才是具体的配置选项。

我们来看看可以进行哪些配置:

rw  (read/write) 读写

ro  (read/only) 只读

sync 同步模式,内存数据实时写入磁盘,但是相对的会降低磁盘的效率

async 非同步模式,不需要将内存数据实时写入数据,虽然不会降低磁盘的效率,但是万一断电就会丢失一些数据。

no_root_squash 客户端挂载NFS共享目录后,root用户不受约束,权限很大。

root_squash 与上面选项相对,客户端上的root用户使用NFS共享目录时会受到约束,被限定成某个普通用户

all_squash 客户端上所有用户都会在使用NFS共享目录时都被限定为一个普通用户

anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid

接下来就是客户端挂载,因为之前已经安装过nfs-util包了,所以不需要再安装了。

  1. 先将两台机器都关掉防火墙:

systemctl stop firewalld

selinux也要关掉:

getenforce

2. 查看一下可以共享服务端的哪个目录:

showmount -e 192.168.133.130 //该ip为NFS服务端ip

  1. 挂载共享目录:

mount -t nfs 192.168.133.130:/home/nfstestdir /mnt

  1. 使用df -h可以看到挂载好的共享目录:
  1. cd进/mnt目录下,创建一个文件,然后看看服务端有没有更新:

可以看到用户的属主和属组是mysql,至于为什么会这样,下面会提到。

服务端:

因为在nfs的配置文件中配置了:nonuid=1000,anongid=1000

所以在服务端中共享目录下文件的属主就为uid为1000的用户,同样的属组就为gid为1000的用户组。

在服务端中使用id 01这个命令,就可以看到01这个用户的uid和gid:

客户端也是一样的:

所以这是因为在nfs配置文件中已经定义了文件的属主和属组的id,所以在此共享目录下创建的文件,在服务端和客户端上的属主和属组就会对应上这个id。

从以上实验可以知道挂载完目录之后,客户端就可以像访问本地目录一样去访问这个服务器上的目录,客户端在此目录下做出的改动也会同步到服务器上,以上的实验只是简单的使用两台虚拟机模拟服务端和客户端,在实际应用中服务端和客户端都不止一台。但是从这个简单的实验,可以了解到NFS实现了什么样的功能,服务端和客户端又是怎么样进行数据传输的。

0 人点赞