NFS网络文件共享服务

目录

一、什么是NFS服务

1、NFS介绍

2、RPC服务

3、NFS通讯流程

二、实验展示

1、安装包并创建共享文件

2、NFS配置文件

2.1 配置文件格式

2.2 配置文件

2.3 授予远程主机对共享文件的读写权限

2.4 远程主机和NFS服务端间的账号映射问题


一、什么是NFS服务

1、NFS介绍

        NFS(network file system):网络文件系统,功能是可以让不同的主机,不同的操作系统通过网络共享资源。在NFS服务中,如果NFS客户端有相应读写的权限,则可以读写远端NFS服务器的上的资源,并且可以将文件挂载在本地目录上,挂载之后这个目录看起来如同自己的磁盘分区一般,示例如下图。

        当我们在NFS服务器设置好一个共享目录/home/public后,其他的有权访问NFS服务器的NFS客户端就可以将这个目录挂载到自己文件系统的某个挂载点,这个挂载点可以自己定义,如上图客户端A与客户端B挂载的目录就不相同。并且挂载好后我们在本地能够看到服务端/home/public的所有数据。如果服务器端配置的客户端只读,那么客户端就只能够只读。如果配置读写,客户端就能够进行读写。

2、RPC服务

        RPC(Remote Procedure Call)即远程过程调用。NFS这个服务器的端口是2049,但由于文件系统非常复杂的,因此NFS还有其他额外的端口需要启动,这些额外的用来传输数据的端口是随机选择的,既然端口是随机的,那么客户端又是如何知道NFS服务器端到底使用的是哪个端口呢。RPC 最主要的功能就是在指定每个 NFS 功能所对应的端口 ,并且通知客户端,让客户端可以连结到正确的端口上去。

3、NFS通讯流程

1)首先服务器端启动RPC服务,并开启111端口。

2)服务器端启动NFS服务,并向RPC注册端口信息。

3)客户端启动RPC服务,向服务端的RPC服务请求服务端的NFS端口。

4)服务端的RPC服务反馈NFS端口信息给客户端。

5)客户端通过获取的NFS端口来建立和服务端的NFS端口连接并进行数据的传输。

示例图如下:

二、实验展示

1、安装包并创建共享文件

yum -y install nfs-utils rpcbind
systemctl start nfs-server rpcbind
mkdir /data/nfs1
touch /data/nfs1/a.txt

2、NFS配置文件

2.1 配置文件格式

/dir        主机1(opt1,opt2)        主机2(opt1,opt2)......

/dir:表示要共享的文件夹

主机:要共享给哪些主机

主机表示格式:

anonymous:表示使用*通配所有客户端
单个主机:ipv4,ipv6,FQDN
IP networks :两种掩码格式均支持
172.18.0.0/255.255.0.0
172.18.0.0/16
wildcards :主机名通配,例如: *.magedu.com, IP 不可以
netgroups NIS 域的主机组, @group_name

opt:参数,如下

如果什么参数都不加,则默认选项为: (ro,sync,root_squash,no_all_squash)
ro,rw: 只读和读写
async: 异步,数据变化后不立即写磁盘,先写入到缓冲区中,过一段时间再写入磁盘,性能高 , 安全性低
sync: 同步,数据在请求时立即写入共享存储磁盘 , 性能低 , 安全性高
root_squash: 远程 root 映射为服务器端的 nfsnobody用户 CentOS8 nobody用户,CentOS 7 以前的版本为 nfsnobody用户
no_root_squash: 远程 root 映射成 NFS 服务器的 root 用户
all_squash: 所有远程用户 ( 包括 root) 都映射成 nfsnobody用户,CentOS8中 nobody用户
no_all_squash: 保留共享文件的 UID GID
anonuid anongid: 指明用户映射为特定用户 UID 和组 GID ,而非 nobody, 可配合 all_squash 使用

2.2 配置文件

NFS服务端配置
vim /etc/exports


重新使配置文件生效并显示已存在的共享

远程主机配置

yum -y install nfs-utils rpcbind
systemctl start nfs-utils rpcbind
showmount -e 192.168.204.128           #查看远程主机的共享文件
mount 192.168.204.128:/data/nfs1 /mnt  #临时挂载文件

用命令df可查看挂载情况

挂载成功后,便可在远程主机上的/mnt目录下看到服务端的共享文件。

2.3 授予远程主机对共享文件的读写权限

第一步:更改NFS服务端的配置文件

vim /etc/exports

 

exportfs -v                #使配置文件重新生效

改完后,远程主机就有了对共享文件的读写权限 

第二步:更改NFS服务端共享文件目录的权限

 共享文件目录权限如下:

        在远程主机上更改目录下的文件时,会遇到权限拒绝的问题,即使在远程主机上以root用户登录,但映射到NFS服务端会变成nobody用户,因此对于共享文件的目录来说,属于others,因此不能更改目录里的文件。

        可以通过更改权限或目录所有者来解决。

NFS服务端:

 远程主机:

        至此,NFS网络文件共享服务大致如上。

2.4 远程主机和NFS服务端间的账号映射问题

        默认情况下,远程主机上的root账号会映射成NFS服务端的nobody用户。而普通账号会根据uid进行映射,比如远程主机上chen用户uid为1001,映射到NFS服务端的用户uid也为1001。示例图如下:

远程主机上:

NFS服务端:

当然所有账号可以映射为统一账号,更改NFS服务端的配置文件即可

vim /etc/exports

 在里面写入

/data/nfs1  *(rw,all_squash,anonuid=88,anongid=88)

上行代码是示例将所有用户映射为uid和gid都为88的用户,还有更多参数可参考上文中列出的opt参数

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值