NFS实现多服务器文件的共享

打印 上一主题 下一主题

主题 863|帖子 863|积分 2589

一、简介

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

  1. yum -y install nfs-utils
复制代码
2、服务端:创建共享目录

  1. # 创建两个共享目录
  2. mkdir -p /root/nfs/files1
  3. mkdir -p /root/nfs/files2
  4. # 创建测试文件
  5. touch /root/nfs/files1/111.txt
  6. touch /root/nfs/files1/222.txt
  7. touch /root/nfs/files2/333.txt
  8. touch /root/nfs/files2/444.txt
复制代码
3、服务端:设置exports文件

  1. # 默认是空的,需要编辑
  2. vi /etc/exports
  3. # 里面的内容,我们将两个目录共享给另外两台服务器,配置详细内容请查看下面的附录
  4. /root/nfs/files1 192.168.56.11(rw,sync,no_root_squash)
  5. /root/nfs/files2 192.168.56.11(rw,sync,no_root_squash)
  6. /root/nfs/files1 192.168.56.12(rw,sync,no_root_squash)
  7. /root/nfs/files2 192.168.56.12(rw,sync,no_root_squash)
复制代码
导出(广播)编辑的文件,并启动nfs服务,假如已经启动可以直接重启或者exportfs -r
  1. # 可以使用exportfs命令使新修改的配置文件生效
  2. exportfs -r
  3. # 启动
  4. systemctl start nfs
  5. # 重启
  6. systemctl restart nfs
复制代码
4、客户端挂载

注意:两台客户端都需要执行以下命令!
  1. # 1、显示NFS服务器(IP为192.168.56.10)的输出目录列表:
  2. #  showmount 选项
  3. # -d:仅显示已被NFS客户端加载的目录;
  4. # -e:显示NFS服务器上所有的共享目录。
  5. [root@localhost ~]# showmount -e 192.168.56.10
  6. Export list for 192.168.56.10:
  7. /root/nfs/files2 192.168.56.12,192.168.56.11
  8. /root/nfs/files1 192.168.56.12,192.168.56.11
  9. # 2、创建目录,用于挂载
  10. mkdir -p /root/nfs/files1
  11. mkdir -p /root/nfs/files2
  12. # 3、执行挂载
  13. mount -t nfs 192.168.56.10:/root/nfs/files1 /root/nfs/files1
  14. mount -t nfs 192.168.56.10:/root/nfs/files2 /root/nfs/files2
  15. # 4、查看是否挂载成功
  16. [root@localhost files1]# df -h
  17. Filesystem                      Size  Used Avail Use% Mounted on
  18. devtmpfs                        2.1G     0  2.1G   0% /dev
  19. tmpfs                           2.1G     0  2.1G   0% /dev/shm
  20. tmpfs                           2.1G   17M  2.1G   1% /run
  21. tmpfs                           2.1G     0  2.1G   0% /sys/fs/cgroup
  22. /dev/sda1                        40G  8.0G   33G  20% /
  23. 192.168.56.10:/root/nfs/files1   40G  8.0G   33G  20% /root/nfs/files1
  24. 192.168.56.10:/root/nfs/files2   40G  8.0G   33G  20% /root/nfs/files2
  25. # 5、测试
  26. # 任何一台服务器在/root/nfs/files1修改文件,都会同步修改。
复制代码
5、客户端:卸载

  1. #使用以下命令强行解除挂载
  2. umount -l /root/nfs/files2
  3. umount -l /root/nfs/files1
  4. 或者使用
  5. #将会显示使用这个模块的pid
  6. fuser -m /root/nfs/files1
  7. #将会直接kill那个pid
  8. fuser -mk /root/nfs/files1
复制代码
三、附录

1、NFS服务根本命令

  1. systemctl start nfs          启动NFS服务
  2. systemctl stop nfs         停止nfs服务
  3. systemctl restart nfs        重新启动nfs服务
  4. systemctl status nfs         查看nfs服务状态
  5. systemctl enable nfs        设置开机自启动nfs服务
复制代码
2、/etc/exports参数解释

/etc/exports是NFS服务器设置文件,它用于定义共享目录和访问权限。它的格式如下:
  1. <目录路径> <允许访问的主机>(<选项>)
复制代码
其中,目录路径表示要共享的服务端目录路径,答应访问的主机表示可以访问该目录的主机名或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命令

  1. exportfs命令提供了一系列参数,‌用于控制NFS共享的设置和状态。‌以下是一些常用的参数及其功能:‌
  2. -a:‌用于打开或取消所有目录的共享。‌
  3. -r:‌重新共享所有目录,‌使/var/lib/nfs/xtab和/etc/exports同步,‌删除/etc/exports中已删除的条目,‌并移除内核共享表中任何不再有效的条目。‌
  4. -u:‌取消一个或多个目录的共享。‌
  5. -f:‌在“新”模式下,‌刷新内核共享表之外的任何东西,‌任何活动的客户程序将在它们的下次请求中得到mountd添加的新的共享条目。‌
  6. -v:‌输出详细信息,‌显示在共享或取消共享时正在做什么,‌以及显示当前共享列表时的共享选项。‌
  7. 使用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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

笑看天下无敌手

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表