NFS服务学习记录与部署

NFS服务配置

NFS:Network File System网络文件系统,主流异构平台共享文件之一

NFS应用场景是:A,B,C三台机器上需要保证被访问到的文件是一样的,A共享数据出来,B和C分别去挂载A共享的数据目录,从而B和C访问到的数据和A上的一致

 

nfs存储工作原理

NFS工作原理
1.用户进程访问 NFS 客户端,使用不同的函数对数据进行处理
2.NFS 客户端通过 TCP/IP 的方式传递给 NFS 服务端
3.NFS 服务端接收到请求后,会先调用 portmap 进程进行端口映射。
4.nfsd 进程用于判断 NFS 客户端是否拥有权限连接 NFS 服务端。
5.Rpc.mount 进程判断客户端是否有对应的权限进行验证。
6.idmap 进程实现用户映射和压缩
7.最后 NFS 服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。
注意: rpc 是一个远程过程调用,那么使用 nfs 必须有 rpc 服务

1.3 前提条件

1.nfs依赖于RPC服务来传递消息
2.NFS服务启动的端口号是随机的,启动之后会向本地的RCP注册
3.先启动RPC服务,再启动NFS服务
4.NFSRPC之间的通讯是他们自己内部完成的,对于用户来说无感知
5.NFS客户端和服务端不会直接沟通,必须通过RPC服务传递消息
6.防火墙要开放RPC服务的端口

NFS服务端部署

yum install -y nfs-utils /安装nfs,这个包里面包括了rpcbind,如果最后没有显示这个包中包括了rpcbind的话就自行安装rpcbind。

vi /etc/exports //编辑配置文件,在这个配置文件里面写入:

!!!不要回车

/home/nfstestdir 192.168.29.0/24(rw,sync,all_squash,anonuid=1000,anongid=1000)

rw 读写权限
ro 只读权限
root_squash  NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户(不常用)
no_root_squash  NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员(不常用)
all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户(常用)

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

anonuid/anongid 和上面几个选项搭配使用,定义被限定用户的uid和gid
no_all_squash 无论 NFS 客户端使用什么账户访问,都不进行压缩
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
anonuid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

anongid 配置 all_squash 使用,指定 NFS 的用户 UID,必须存在系统

编辑好配置文件后启动NFS服务

mkdir /home/nfstestdir

chmod 777 /home/nfstestdir

systemctl start rpcbind

systemctl start nfs

systemctl enable rpcbind

systemctl enable nfs

setenforce 0

systemctl stop firewalld

客户端挂载

yum install -y nfs-utils

showmount -e 192.168.29.138 (使用服务端ip地址) //-e查看nfs的共享情况

[root@localhost mnt]# showmount -e 192.168.29.138

Export list for 192.168.29.138:

/home/nfstestdir 192.168.29.0/24

mount -t nfs 192.168.29.138:/home/nfstestdir /mnt/ //在客户端上挂载NFS

[root@localhost mnt]# df -h

文件系统                         容量  已用  可用 已用% 挂载点

/dev/mapper/centos-root           18G  879M   17G    5% /

devtmpfs                         903M     0  903M    0% /dev

tmpfs                            913M     0  913M    0% /dev/shm

tmpfs                            913M  8.6M  904M    1% /run

tmpfs                            913M     0  913M    0% /sys/fs/cgroup

/dev/sda1                        497M  125M  373M   25% /boot

tmpfs                            183M     0  183M    0% /run/user/0

192.168.29.138:/home/nfstestdir   18G  946M   17G    6% /mnt

touch /mnt/dai.txt

ls -l /mnt/dai.txt

[root@localhost mnt]# ls -l /mnt/dai.txt

-rw-r--r--. 1 1000 1000 26 11月 18 17:14 /mnt/dai.txt

exportfs命令

-a:表示全部挂载或者卸载

-r:表示重新挂载

-u:表示卸载某一目录

-v:表示显示共享目录

在服务端进行以下操作

vi /etc/exports

添加:/tmp/ 192.168.29.0/24(rw,sync,no_root_squash)

exports -arv

客户端

mkdir /dai

mount -t nfs -onolock 192.168.29.138:/tmp /dai

touch /dai/test.txt

服务端

[root@localhost nfstestdir]# ls

aa  dai.txt

客户端

[root@localhost mnt]# cd /mnt/

[root@localhost mnt]# ls

aa  dai.txt

原文地址:https://www.cnblogs.com/daiqinghui/p/14062956.html