Linux中NFS设置

打印 上一主题 下一主题

主题 791|帖子 791|积分 2373


一、NFS先容

   NFS(Network File System,网络文件体系)是一种分布式文件体系协议,答应网络中的计算机之间通过TCP/IP网络共享资源,旨在使远程文件体系对用户透明,就好像访问本地文件一样。
    NFS最初由Sun Microsystems开发,并在1984年初次发布。它广泛应用于企业环境和多操作体系环境中,进步了数据共享的服从和灵活性。NFS基于客户端-服务器架构,其中服务器端提供共享的文件体系资源,客户端通过网络请求这些资源。该协议通常在应用层实现,并依赖于传输层的协议进行通讯,传统上使用UDP,但后续版本也可以使用TCP以增强可靠性。
  

1.1、NFS的工作流程



  • NFS服务器设置:服务器端需要设置并启动NFS服务,这包罗编辑出口表(/etc/exports),指定哪些目次可以被共享以及访问权限。
  • 客户端设置:客户端同样需要设置以访问NFS服务器,这通常涉及到创建挂载点并使用mount下令将远程NFS目次挂载到本地。
  • 网络通讯:

    • 当客户端请求访问NFS共享时,它首先通过发送网络请求到NFS服务器来获取文件句柄。
    • 文件句柄是NFS服务器用于表示文件体系内部布局的一种机制,对客户端来说是透明的。
    • 一旦得到文件句柄,客户端就可以使用该句柄进行后续的文件操作,如读取、写入、打开等。

  • 数据传输:在文件句柄的基础上,客户端通过网络与NFS服务器进行数据传输,无论是读取还是写入数据。
  • 缓存与延长写:NFS客户端通常会缓存文件数据以优化性能,这大概导致写入操作被延长执行,以进步整体的体系性能。
  • 故障处理:在网络不稳定或NFS服务器出现故障的环境下,客户端需要能够处理这些异常环境,大概包罗重新实验请求或规复到正常状态。
1.2、NFS重要涉及的软件包

   NFS重要涉及的软件包有nfs-utils和rpcbind。
  

  • nfs-utils是NFS服务的重要软件包,提供了运行NFS服务所必须的步伐和工具。
  • pcbind(早期称为portmap)是管理端口映射的服务,对于NFS的正常运行至关紧张,由于它负责维护端口信息并帮助客户端找到正确的服务端口。
1.3、NFS的重要设置文件



  • NFS的重要设置文件是 /etc/exports。
   这个文件负责界说哪些目次可以被共享,以及对这些共享目次的访问权限和选项设置。比如,“/test888 192.168.78.0/24(rw,sync,no_root_squash)”表示将/test888目次共享给192.168.78.0网段的用户,并且用户有读写权限,数据同步写入,以及当客户端以root身份访问时赋予本地root权限。修改设置后,需要使用exportfs下令重新加载设置文件,以使改动生效。
  二、安装NFS

2.1、更新yum

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# dnf update -y
  2. CentOS Stream 9 - BaseOS                                                                                                                                   35 MB/s | 8.2 MB     00:00   
  3. CentOS Stream 9 - AppStream                                                                                                                                58 MB/s |  20 MB     00:00   
  4. CentOS Stream 9 - Extras packages                                                                                                                         237 kB/s |  18 kB     00:00   
  5. Dependencies resolved.
复制代码
2.2、安装NFS服务

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# dnf install -y nfs-utils
  2. Last metadata expiration check: 0:05:51 ago on Sun 04 Aug 2024 05:25:36 PM CST.
  3. Dependencies resolved.
  4. ==========================================================================================================================================================================================
  5. Package                                         Architecture                            Version                                            Repository                               Size
  6. ==========================================================================================================================================================================================
  7. Installing:
  8. nfs-utils                                       x86_64                                  1:2.5.4-26.el9                                     baseos                                  460 k
  9. Installing dependencies:
  10. gssproxy                                        x86_64                                  0.8.4-6.el9                                        baseos                                  110 k
  11. libev                                           x86_64                                  4.33-5.el9                                         baseos                                   53 k
  12. libnfsidmap                                     x86_64                                  1:2.5.4-26.el9                                     baseos                                   62 k
  13. libverto-libev                                  x86_64                                  0.3.2-3.el9                                        baseos                                   14 k
  14. rpcbind                                         x86_64                                  1.2.6-7.el9                                        baseos                                   58 k
  15. sssd-nfs-idmap                                  x86_64                                  2.9.5-4.el9                                        baseos                                   42 k
  16. Transaction Summary
复制代码
2.3、设置NFS服务器

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# vi /etc/exports
  2. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# cat /etc/exports
  3. /shared 192.168.1.0/24(rw,sync,no_subtree_check)
复制代码


  • 这表示/shared目次将被192.168.1.0/24网段的客户机以读写同步方式访问,并且不进行子树检查。
2.4、启动NFS服务

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl start nfs-server
  2. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl status nfs-server
  3. ● nfs-server.service - NFS server and services
  4.      Loaded: loaded (/usr/lib/systemd/system/nfs-server.service; disabled; preset: disabled)
  5.      Active: active (exited) since Sun 2024-08-04 17:33:36 CST; 10s ago
  6.        Docs: man:rpc.nfsd(8)
  7.              man:exportfs(8)
  8.     Process: 88200 ExecStartPre=/usr/sbin/exportfs -r (code=exited, status=1/FAILURE)
  9.     Process: 88201 ExecStart=/usr/sbin/rpc.nfsd (code=exited, status=0/SUCCESS)
  10.     Process: 88237 ExecStart=/bin/sh -c if systemctl -q is-active gssproxy; then systemctl reload gssproxy ; fi (code=exited, status=0/SUCCESS)
  11.    Main PID: 88237 (code=exited, status=0/SUCCESS)
  12.         CPU: 17ms
  13. Aug 04 17:33:35 iZbp11qs3pjvo8kz8vtcvfZ systemd[1]: Starting NFS server and services...
  14. Aug 04 17:33:35 iZbp11qs3pjvo8kz8vtcvfZ exportfs[88200]: exportfs: Failed to stat /shared: No such file or directory
  15. Aug 04 17:33:36 iZbp11qs3pjvo8kz8vtcvfZ systemd[1]: Finished NFS server and services.
复制代码
2.5、设置防火墙(假如启用了防火墙,需要答应NFS相干的端口通过)

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# firewall-cmd --permanent --add-service=nfs --add-service=mountd --add-service=rpc-bind --add-service=nscd --add-service=auditd --add-service=nfs-lock --add-service=nfs-idmap
  2. FirewallD is not running
复制代码


  • 返回结果为防火墙未运行
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# systemctl status firewalld
  2. ○ firewalld.service - firewalld - dynamic firewall daemon
  3.      Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
  4.      Active: inactive (dead)
  5.        Docs: man:firewalld(1)
复制代码
2.6、生效防火墙设置

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# firewall-cmd --reload
复制代码
三、exports设置文件参数



  • 访问权限

    • ro:只读访问。
    • rw:读写访问。

  • 同步与异步

    • sync:所有数据在请求时写入共享。
    • async:NFS在写入数据前可以响应请求。

  • 安全设置

    • secure:NFS通过1024以下的安全TCP/IP端口发送。
    • insecure:NFS通过1024以上的端口发送。

  • 写入设置

    • wdelay:假如多个用户要写入NFS目次,则归组写入(默认)。
    • no_wdelay:假如多个用户要写入NFS目次,则立即写入,当使用async时,无需此设置。

  • 子目次设置

    • hide:在NFS共享目次中不共享其子目次。
    • no_hide:共享NFS目次的子目次。

  • 检查设置

    • subtree_check:假如共享子目次时,强制NFS检查父目次的权限(默认)。
    • no_subtree_check:不检查父目次权限。

  • 映射设置

    • all_squash:共享文件的UID和GID映射匿名用户anonymous,适合公用目次。
    • no_all_squash:保存共享文件的UID和GID(默认)。
    • root_squash:root用户的所有请求映射成如anonymous用户一样的权限(默认)。
    • no_root_squash:root用户具有根目次的完全管理访问权限。

3.1、添加其他网段访问权限

  1. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# vi /etc/exports
  2. [root@iZbp11qs3pjvo8kz8vtcvfZ ~]# cat /etc/exports
  3. /shared 192.168.1.0/24(rw,sync,no_subtree_check)
  4. /etc 172.16.1.0/24(rp,root_squash,anonuid,anongid,insecure)
复制代码


  • 这表示/etc目次将被172.16.1.0/24网段的客户机以只读方式访问,并且客户端使用的root用户映射为NFS服务器的匿名用户,设置匿名用户的UID和GID,答应使用1024以上的端口
3.2、exportfs的用法

3.2.1、显示当前共享列表



  • 使用exportfs -av下令可以显示所有当前已经共享的目次,以及它们的共享属性和客户端访问权限。
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -av
  2. exporting 172.16.1.0/24:/etc
  3. exporting 192.168.1.0/24:/shared
  4. exportfs: Failed to stat /shared: No such file or directory
复制代码
  返回结果剖析
  

  • “exporting 172.16.1.0/24:/etc”,表示正在实验导出目次 /etc,答应 IP 地址范围为 172.16.1.0/24 的客户端访问。
  • “exporting 192.168.1.0/24:/shared”,表示正在实验导出目次 /shared,答应 IP 地址范围为 192.168.1.0/24 的客户端访问。
  • “exportfs: Failed to stat /shared: No such file or directory”,表示无法找到名为 /shared 的文件或目次。
   注:由于体系中没有shared如许的目次,所以会报错。
  3.2.2、添加共享目次



  • 首先编辑/etc/exports文件,添加新的共享目次及其访问权限设置。然后运行exportfs -ar下令,使得设置文件的更改生效,无需重启NFS服务。
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -ar
  2. [root@iZbp11qs3pjvo8kz8vtcvfZ /]#
复制代码
  这里不会出现返回结果
  3.2.3、重新挂载共享目次



  • 在某些环境下,假如更改了/etc/exports文件中的设置,需要重新挂载共享目次以应用更改。这时可以使用exportfs -r下令重新挂载所有目次,使之与设置文件同步。
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -r
  2. [root@iZbp11qs3pjvo8kz8vtcvfZ /]#
复制代码
3.2.4、显示详细信息



  • 使用exportfs -v下令可以检察更详细的共享信息,包罗哪些目次被共享、哪些客户端有权访问等。
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ /]# exportfs -v
  2. /usr/sbin       192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
  3. /etc            172.16.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,ro,secure,root_squash,no_all_squash)
复制代码
同时,还有一条下令可以检察
  1. [root@iZbp11qs3pjvo8kz8vtcvfZ /]# showmount -e localhost
  2. Export list for localhost:
  3. /usr/sbin 192.168.1.0/24
  4. /etc      172.16.1.0/24
复制代码
四、客户端设置

   要在NFS客户端上使用服务器的共享目次,需要在本地主机上启动rpcbind服务,然后使用showmount下令检察NFS服务器共享的目次有哪些,使用mkdir下令在本地建立共享目次的挂载点,末了使用mount下令挂载共享目次到本地。
  五、showmount下令的用法

   showmount下令是一个用于检查NFS(网络文件体系)服务器上共享目次的工具。它答应客户端检察哪些目次被NFS服务器导出(共享),并获取关于这些共享的信息。showmount通常在调试NFS服务器设置和客户端挂载问题时使用。
  

  • 检察NFS服务器上的共享目次:
  1. showmount -e NFS服务器地址
复制代码


  • 列出所有已知的NFS服务器:
  1. showmount -D
复制代码


  • 检查特定NFS服务器的导出列表:
  1. showmount -d NFS服务器地址
复制代码


  • 列出所有已知的NFS服务器,然后对每个服务器显示其导出列表:
  1. showmount --all
复制代码


  • 帮助和版本信息:
  1. showmount -help
  2. showmount -version
复制代码
六、使用autofs按需挂载共享目次

   在传统的NFS共享目次使用方式中,客户端要挂载共享目次一般是通过手工执行mount下令或在fstab文件中设置开机自动挂载这两种方式来完成。但是,NFS客户端与服务器之间并不是永久连接的,而NFS的一个缺点是当客户端和服务器连接后,任何一方离线都大概导致另一方在不断等待超时。同时,大概有许多用户挂载了共享目次,但实际上他们并不去使用该目次,这些用户也会导致NFS服务器资源的耗费。为了解决这些问题,一般的做法是使用autofs服务,仅在访问时才动态挂载共享目次。
  6.1、安装autofs软件包

  1. dnf install autofs
复制代码
6.2、编辑autofs设置文件

  1. vi /etc/auto.master
复制代码
6.3、在打开的文件中添加以下内容(假设您的共享目次位于/mnt/shared)

  1. /mnt /etc/auto.shared --timeout=600
复制代码


  • 这将告诉autofs将挂载点/mnt/shared映射到/etc/auto.shared文件。–timeout=600表示共享目次将在600秒后自动卸载。
6.4、创建一个新的autofs设置文件来界说共享目次的挂载规则

  1. vi /etc/auto.shared
复制代码
6.5/在打开的文件中添加以下内容(替换为您的实际共享目次路径和服务器地址)

  1. shared_directory -fstype=nfs4,rw,sync,noatime server:/path/to/shared/directory
复制代码


  • shared_directory是您希望在本地体系中看到的挂载点名称,server是NFS服务器的IP地址或主机名,/path/to/shared/directory是共享目次在NFS服务器上的路径。
6.6、启动autofs服务

  1. systemctl start autofs
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

前进之路

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

标签云

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