首页 > 技术文章 > Blog.034 Linux 中的 NFS 共享存储服务

ly159357 2021-07-12 12:04 原文

1. NFS 概述

    网络文件系统,英文 Network File System(NFS),是由 SUN 公司研制的 UNIX 表示层协议(presentation layer protocol),能使使用者访问网络上别处的文件就像在使用自己的计算机一样。


  1.1 NFS 的优点

    通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源;对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的方法,NFS也是NAS存储设备必然支持的一种协议。


  1.2 NFS 的缺点

    由于NFS没有用户认证机制,而且数据在网络上明文传输,所以安全性很差,一般只在局域网中使用。


  1.3 NFS 的使用要求

 

    NFS 服务的实现依赖于 RPC(远程过程调用)机制,以完成远程到本地的映射过程,所以需要安装 nfs-utils、rpcbind 软件包来提供共享服务,前者用于 NFS 共享发布和访问,后者用于 RPC 支持。

 

  • 依赖于 RPC (远端过程调用)
  • 需安装 nfs-utils、rpcbind 软件包
  • 系统服务: nfs、rpcbind
  • 共享配置文件: /etc/exports


  1.4 NFS 的配置文件

 

    • NFS的配置文件为:/etc/exports
    • 格式:共享的目录名称 客户机地址(权限选择)
    •   
    • 1.5 NFS 原理图
    • 2. NFS 共享存储服务的配置实例
        ①:服务器端基本配置

       

      复制代码
      1 rpm -q rpcbind nfs-utils                    #查看是否安装
      2 yum install-y rpcbind nfs-utils             #未安装可以使用yum进行安装
      3 mkdir -p /opt/share                     #创建目录
      4 chmod 777 /opt/share                        #赋予权限
      5 vim /etc/exports                            #编辑配置文件
      6 /opt/share 192.168.229.0/24(rw,sync,no_root_squash)         #新增的配置
      复制代码

       

       

       

          配置文件内容的解释:

       

      • 客户机地址可以是主机名、IP地址、网段地址,允许使用“*”、“?”通配符;
      • “rw”表示允许读写,“ro”表示为只读;
      • “sync”:表示同步写入到内存与硬盘中;
      • “no_root_squash”:表示当客户机以root身份访问时赋予本地root权限(默认是root_squash);
      • “root_squash”:表示客户机用root用户访问更改共享目录时,将root用户映射成匿名用户。

       

          其他常用选项:

       

      • “all_sauash”:所有访问用户都映射为匿名用户或者用户组;
      • “async”:将数据先保存在内存缓冲区中,必须时才写入磁盘;
      • “subtree_check”(默认):若输出目录是一个子目录,则nfs服务器将检查其父目录的权限;
      • “no_subtree_check”:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样做可以提高效率。
      • “anonuid=xxx”:指定NFS服务器/etc/passwd文件中的匿名用户的UID
      • “anongid=xxx”:指定NFS服务器/etc/passwd文件中的匿名用户的GID

       

      复制代码
       1 systemctl stop firewalld
       2 setenforce 0
       3 systemctl status firewalld 
       4 systemctl start rpcbind             #开启rpcbind
       5 systemctl start nfs                 #开启nfs
       6 systemctl enable rpcbind            #将rpcbind设为自启动
       7 systemctl enable nfs                #将nfs设为自启动
       8  
       9 netstat -anpt | grep rpcbind        #查看rpcbind是否开启
      10 netstat -anpt | grep 111            #查看端口111是否开启
      11 exportfs -rv                        #发布NFS共享目录
      12 showmount -e                        #查看NFS共享目录
      复制代码

       

       

        ②:客户端基本配置

       

      复制代码
       1 rpm -q rpcbind nfs-utils                    #查看是否安装
       2 yum install-y rpcbind nfs-utils             #未安装可以使用yum进行安装
       3 
       4 showmount -e 192.168.229.30                            #查看服务器NFS共享目录
       5 mkdir /data                                #新建目录                       
       6 mount 192.168.229.30:/opt/share  /data/     #进行手动挂载
       7 df -hT                                              #查看挂载情况
       8  
       9 设置自动挂载:
      10 vim /etc/fstab
      11 192.168.229.30:/opt/share   /data   nfs  defaults,_netdev     0 0
      12  
      13 _netdev:表示挂载设备需要网络
      复制代码

       

       

        ③:强制卸载NFS

       

       

          如果服务器端NFs服务突然间停掉了,而客户端正在挂载使用时,在客户端就会出现执行df-h命令卡死的现象。
          这个时候直接使用umount命令是无法直接卸载的,需要加上-lf选项才能卸载。

推荐阅读