一、简介
NFS是network file sytem的缩写,它答应网络中的计算机之间共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
因为NFS服务有很多功能,提供不同功能的历程利用的端标语也就会各不相同,假如客户端想要请求NFS服务器的某项功能,势必需要先知道其功能的目标端标语,才气从NFS服务器那里获得服务。那么NFS服务这么多功能端标语,客户端怎样知道NFS服务器的某项功能利用的什么端标语呢?这就需要RPC远程过程调用协议来记录NFS服务器各功能所利用的端标语。其过程如下:
1.首先在服务端,NFS服务启动以后,就会随机的利用一些端标语,然后NFS服务就会将本身利用的端标语告诉本系统内的RPC服务,RPC记录下NFS各个功能所利用的端口。并开启RPC服务的111端口等待客户端通过RPC请求来获取到NFS服务所利用的端标语。
2.客户端启动自身的RPC(portmap)服务,向服务端的RPC(portmap)服务请求NFS文件共享服务开放的端标语。
3.服务端RPC服务收到用户的请求后,查阅NFS服务所利用的端标语,并将其利用的端标语告诉给客户端。
4.客户端知道NFS服务器利用的端标语后,就可以通过获取到的目标端标语与NFS服务器进行数据传输。
注意:在服务端上,因为NFS服务需要向RPC服务注册本身所利用的端标语,因此RPC只有先于NFS服务启动,NFS服务才气将本身利用的端标语注册到本地的RPC服务上。
二、部署
1、预备
我们这里预备了三台服务器,一台服务端,两台客户端进行测试。
1、服务端和客户端:安装nfs-utils
2、服务端:创建共享目录
- # 创建两个共享目录
- mkdir -p /root/nfs/files1
- mkdir -p /root/nfs/files2
- # 创建测试文件
- touch /root/nfs/files1/111.txt
- touch /root/nfs/files1/222.txt
- touch /root/nfs/files2/333.txt
- touch /root/nfs/files2/444.txt
复制代码 3、服务端:设置exports文件
- # 默认是空的,需要编辑
- vi /etc/exports
- # 里面的内容,我们将两个目录共享给另外两台服务器,配置详细内容请查看下面的附录
- /root/nfs/files1 192.168.56.11(rw,sync,no_root_squash)
- /root/nfs/files2 192.168.56.11(rw,sync,no_root_squash)
- /root/nfs/files1 192.168.56.12(rw,sync,no_root_squash)
- /root/nfs/files2 192.168.56.12(rw,sync,no_root_squash)
复制代码 导出(广播)编辑的文件,并启动nfs服务,假如已经启动可以直接重启或者exportfs -r
- # 可以使用exportfs命令使新修改的配置文件生效
- exportfs -r
- # 启动
- systemctl start nfs
- # 重启
- systemctl restart nfs
复制代码 4、客户端挂载
注意:两台客户端都需要执行以下命令!
- # 1、显示NFS服务器(IP为192.168.56.10)的输出目录列表:
- # showmount 选项
- # -d:仅显示已被NFS客户端加载的目录;
- # -e:显示NFS服务器上所有的共享目录。
- [root@localhost ~]# showmount -e 192.168.56.10
- Export list for 192.168.56.10:
- /root/nfs/files2 192.168.56.12,192.168.56.11
- /root/nfs/files1 192.168.56.12,192.168.56.11
- # 2、创建目录,用于挂载
- mkdir -p /root/nfs/files1
- mkdir -p /root/nfs/files2
- # 3、执行挂载
- mount -t nfs 192.168.56.10:/root/nfs/files1 /root/nfs/files1
- mount -t nfs 192.168.56.10:/root/nfs/files2 /root/nfs/files2
- # 4、查看是否挂载成功
- [root@localhost files1]# df -h
- Filesystem Size Used Avail Use% Mounted on
- devtmpfs 2.1G 0 2.1G 0% /dev
- tmpfs 2.1G 0 2.1G 0% /dev/shm
- tmpfs 2.1G 17M 2.1G 1% /run
- tmpfs 2.1G 0 2.1G 0% /sys/fs/cgroup
- /dev/sda1 40G 8.0G 33G 20% /
- 192.168.56.10:/root/nfs/files1 40G 8.0G 33G 20% /root/nfs/files1
- 192.168.56.10:/root/nfs/files2 40G 8.0G 33G 20% /root/nfs/files2
- # 5、测试
- # 任何一台服务器在/root/nfs/files1修改文件,都会同步修改。
复制代码 5、客户端:卸载
- #使用以下命令强行解除挂载
- umount -l /root/nfs/files2
- umount -l /root/nfs/files1
- 或者使用
- #将会显示使用这个模块的pid
- fuser -m /root/nfs/files1
- #将会直接kill那个pid
- fuser -mk /root/nfs/files1
复制代码 三、附录
1、NFS服务根本命令
- systemctl start nfs 启动NFS服务
- systemctl stop nfs 停止nfs服务
- systemctl restart nfs 重新启动nfs服务
- systemctl status nfs 查看nfs服务状态
- systemctl enable nfs 设置开机自启动nfs服务
复制代码 2、/etc/exports参数解释
/etc/exports是NFS服务器设置文件,它用于定义共享目录和访问权限。它的格式如下:
其中,目录路径表示要共享的服务端目录路径,答应访问的主机表示可以访问该目录的主机名或IP。
参数解释:
(1) ro 该主机对该共享目录有只读权限
(2) rw 该主机对该共享目录有读写权限
(3) root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
(4) no_root_squash 客户机用root访问该共享文件夹时,不映射root用户
(5) all_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
(6) anonuid 将客户机上的用户映射成指定的本地用户ID的用户
(7) anongid 将客户机上的用户映射成属于指定的本地用户组ID
(8) sync 资料同步写入到内存与硬盘中
(9) async 资料会先暂存于内存中,而非直接写入硬盘
(10) insecure 答应从这台机器过来的非授权访问
(11) subtree_check 假如共享/usr/bin之类的子目录时,逼迫NFS查抄父目录的权限(默认)
(12) no_subtree_check 和上面相对,不查抄父目录权限
(13) wdelay 假如多个用户要写入NFS目录,则归组写入(默认)
(14 )no_wdelay 假如多个用户要写入NFS目录,则立刻写入,当利用async时,无需此设置。
(15) hide 在NFS共享目录中不共享其子目录
(16) no_hide 共享NFS目录的子目录
(17) secure NFS通过1024以下的安全TCP/IP端口发送
(18) insecure NFS通过1024以上的端口发送
3、exportfs命令
- exportfs命令提供了一系列参数,用于控制NFS共享的设置和状态。以下是一些常用的参数及其功能:
- -a:用于打开或取消所有目录的共享。
- -r:重新共享所有目录,使/var/lib/nfs/xtab和/etc/exports同步,删除/etc/exports中已删除的条目,并移除内核共享表中任何不再有效的条目。
- -u:取消一个或多个目录的共享。
- -f:在“新”模式下,刷新内核共享表之外的任何东西,任何活动的客户程序将在它们的下次请求中得到mountd添加的新的共享条目。
- -v:输出详细信息,显示在共享或取消共享时正在做什么,以及显示当前共享列表时的共享选项。
- 使用exportfs命令时,无需重启NFS服务即可使配置文件生效,这对于动态调整NFS共享非常有用。例如,当修改了/etc/exports配置文件后,可以通过执行exportfs -arv命令来立即使更改生效,而不是重新启动NFS服务
复制代码 参考资料
https://zhuanlan.zhihu.com/p/78114809
https://blog.csdn.net/liebe_u/article/details/139708752
https://www.cnblogs.com/hanfe1/p/16642948.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |