前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NFS介绍,NFS服务端安装配置,NFS配置选项

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

作者头像
端碗吹水
发布2020-09-23 11:16:55
1.8K0
发布2020-09-23 11:16:55
举报

笔记内容:

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

笔记日期:2017-11-01

14.1 NFS介绍

4221
4221

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

4222
4222

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

4223
4223

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

14.2 NFS服务端安装配置

4224
4224

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)

4225
4225

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

4. 创建nfstestdir目录:

mkdir /home/nfstestdir

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

chmod 777 /home/nfstestdir

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

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

systemctl start rpcbind

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

4228
4228
  1. 启动nfs服务:

systemctl start nfs

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

4229
4229

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

4230
4230

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

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

systemctl enable rpcbind

systemctl enable nfs

14.3 NFS配置选项

4232
4232

刚刚在/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

4233
4233

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

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

systemctl stop firewalld

selinux也要关掉:

getenforce

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

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

4234
4234
  1. 挂载共享目录:

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

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

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

服务端:

4238
4238

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

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

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

4239
4239

客户端也是一样的:

4240
4240

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

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档