程序员

linux NFS 学习笔记

2021-01-03  本文已影响0人  相信奇迹德人

NFS

1 什么是NFS

3 NFS的工作原理

​ NFS本身的服务并没有提供数据传递的协议,而是通过使用RPC(远程过程调用 Remote Procedure Call)来实现。当NFS启动后,会随机的使用一些端口,NFS就会向RPC去注册这些端口。RPC就会记录下这些端口,RPC会开启111端口。通过client端和sever端端口的连接来进行数据的传输。在启动nfs之前,首先要确保rpc服务启动。

11111.jpg 222.jpg
  1. 首先服务器端启动RPC服务,并开启111端口
  2. 启动NFS服务,NFS服务除了启动nfsd本身监听的端口2049/tcp和2049/udp,还会启动其它进程(如mountd,statd,rquotad等)以完成文件共享,这些进程的端口是不固定的;是每次NFS服务启动时向RPC服务注册的,RPC服务会随机分配未使用的端口
  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口
  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。
  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
92e9d92e0dcf1db2a709126be4db3cd8.png

3 NFS存储服务作用

4 NFS服务部署流程

4.1 服务器端部署

4.1.1 安装rpc 和 rpc
rpm -qa|grep -E "nfs|rpc"
yum install -y nfs-utils rpcbind
4.1.2 编写nfs服务配置文件

exports文件格式

共享目录 [客户端1(选项1,选项2…)] [客户端2(选项1,选项2…)]…

选项 解释
ro 该主机对该共享目录有只读权限
rw 该主机对该共享目录有读写权限,要注意是针对nfs之外还有目录自己权限
root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
no_root_squash 客户机用root访问该共享文件夹时,不压制root用户身份
all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
no_all_squaash 客户机上的普通用户不进行身份进行转换
anonuid 将客户机上的用户映射成指定的本地用户ID的用户
anongid 将客户机上的用户映射成属于指定的本地用户组ID
sync 资料同步写入到内存与硬盘中
async 资料会先暂存于内存中,而非直接写入硬盘
insecure 允许从这台机器过来的非授权访问

exports 多种配置形式

1.常用配置

#默认客户端 如果是root身份 默认使用root_squash 将root用户映射成了匿名用户
#默认客户端 如果是其他用户身份 默认使用了no_all_squash 没有将普通用户映射
/data 172.17.1.101/24(rw,sync)

#ro 对nfs共享目录有读写权限
/data 172.17.1.101/24(ro,sync)

#修改默认的匿名用户(不常用)
/data  172.17.1.101/24(ro,sync,anonuid=xxx,anongid=xxx)

2.all_squash

#客户机上的任何用户访问该共享目录时都映射成匿名用户(包括root)
/data 172.17.1.101/24(rw,sync,all_squash)

3,no_all_squash

#客户机上的普通用户不进行身份进行转换(对root没作用 root默认已经进行了转换)
/data 172.17.1.101/24(rw,sync,no_all_squash)
#普通用户不进行身份转换 操作nfs共享目录是以nfs共享目录的其他用户操作的 
#将nfs共享目录添加w权限 普通用户就可以操作nfs共享目录了
chown o+w /data

#还有一种情况就是NFS服务器中创建一个与客户机访问用户id和名字一样的用户
#一般应用于网站(www用户)
/data 172.17.1.101/24(rw,sync,no_all_squash)

4.root_squash

#h客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户(默认)
/data 172.17.1.101/24(rw,sync,root_squash)

5.no_root_squash

#客户机用root访问该共享文件夹时,不转换root用户身份
#相当于是直接使用了root身份操作共享目录 存在很大的安全隐患,一般不使用
/data 172.17.1.101/24(rw,sync,no_root_squash)
4.1.3 创建共享目录
mkdir /data
chmod nfsnobody:nfsnobody /data

4.2 客户端部署

#安装nfs软件为 客户端提供一个nfs的文件系统 
yum install -y nfs-utils
#远程挂载共享目录
mount -t nfs 172.16.1.105:/data  /mnt 

4.3 exportfs 命令

​ exportfs主要用于管理当前NFS服务器的文件系统

exportfs 语法

SYNOPSIS
       /usr/sbin/exportfs [-avi] [-o options,..] [client:/path ..]
       /usr/sbin/exportfs -r [-v]
       /usr/sbin/exportfs [-av] -u [client:/path ..]
       /usr/sbin/exportfs [-v]
       /usr/sbin/exportfs -f
       /usr/sbin/exportfs -s
选项 说明
-a 共享nfs配置文件中所有的共享目录
-i 忽略/etc/exports配置文件,只使用exportfs指令的默认值和命令行指定的参数
-r 重新共享所有的nfs文件系统
-u 取消一个或者多个NFS共享文件系统的共享
-v 显示详细执行信息

exportsfs 命令的常用用法

#取消一个个NFS共享文件系统的共享
exportfs -u 172.17.1.101:/media/test
#修改了exports文件 不需要重启NFS服务 让配置文件生效
exportfs -rv
上一篇 下一篇

猜你喜欢

热点阅读