zoukankan      html  css  js  c++  java
  • Linux nfs服务介绍

    nfs服务介绍

    1. nfs(Network File System) 网络文件系统,能使用户访问服务器的文件系统,就像访问自己的本机的文件系统一样,并且多个
      客户端共享访问该文件系统。
    2. 目前nfs服务,较为流行的两个nfs的组件为:nfsd,nfs-ganesha。前者linux为系统自带的内核态的文件系统,后者是开源的用户空间的文件
      系统。因为nfs-ganesha运行在用户态,nfsd运行在内核态,所以nfs-ganesha具有内存分配灵活,可移植性更好,更方便扩展等优势。
      缺点是nfs-ganesha目前的稳定性还不如nfsd。

    如何搭建nfsd和nfs-ganesha服务

    机器环境为centos7,由于两者都使用2049端口,因此一台服务器上,只能跑其中之一.

    1. 搭建nfsd服务
      A. 检查是否安装rpcbind和nfs-utils软件
      rpm -qa | grep rpcbind nfs-utils

      B. 如果上面两个软件没有安装,需要安装这两个软件
      yum install -y rpcbind nfs-utils

      C. 启动B中安装的软件
      systemctl start rpcbind && systemctl enable rpcbind
      systemctl start nfs && systemctl enable nfs

      D. 配置nfs权限文件
      配置权限可以直接修改/etc/exports文件,也可以在/etc/exports.d目录下,添加*.exports文件。
      文件内容格式为:目录 IP/IP网段(nfs选项)
      文件内容每一个权限的占用一行,选项一般使用较多的搭配项为,rw/ro,sync,no_root_squash,rw表示读写,ro表示只读
      sync,表示数据写入到内存和硬盘,保证数据不会丢失,当客户端用root身份挂载时候,nfs服务器将其映射为root用户.

      E. 执行权限的加载 命令,exportfs -rav 执行这个命令,并不需要去重启nfs服务。

      F. 客户端使用如下命令去挂载,172.16.0.1表示服务器的ip地址,vers 代表协议类型,支持3,4,4.1等,/mnt表示服务器的
      共享目录,/tmp为本地目录
      mount -t nfs 172.16.0.1:/mnt /tmp -o vers=4

      G. 挂载成功后,使用df命令,nfs4所在的哪一行为挂载的nfs文件系统

      然后就可以,cd /tmp,对这个目录下进行读写文件等操作了,
      至此nfsd服务全部搭建完毕。

      H. 查看nfs的日志,在系统日志/var/log/messages中,可以用vim打开,搜索nfs关键字。

    2. nfs-ganesha搭建
      A. 从github下载nfs-ganesha,按照官网给的编译文档进行编译,并将相应的二进制ganesha.nfsd ,拷贝/usr/bin/目录下

      B. 配置nfs-ganesha的systemd服务,从nfs-ganesha/src/scripts/systemd目录下,将nfs-ganesha-lock.service.el7,nfs-ganesha.service.el7
      拷贝到目录/usr/lib/systemd/system,并去掉后缀el7,然后执行命令systemctl daemon-reload

      C.配置nfs-ganesha的配置文件,/etc/ganesha/ganesha.conf内容大概如下,
      EXPORT
      {

      Export Id (mandatory, each EXPORT must have a unique Export_Id)

      Export_Id = 12345;

      Exported path (mandatory)

      Path = /mnt;

      Pseudo Path (required for NFSv4 or if mount_path_pseudo = true)

      Pseudo = /mnt;

      Restrict the protocols that may use this export. This cannot allow

      access that is denied in NFS_CORE_PARAM.

      Protocols = 3,4;

      Access type for clients. Default is None, so some access must be

      given. It can be here, in the EXPORT_DEFAULTS, or in a CLIENT block

      Access_Type = RW;

      Whether to squash various users.

      Squash = no_root_squash;

      Allowed security types for this export

      Sectype = sys,krb5,krb5i,krb5p;

      Exporting FSAL

      FSAL {
      Name = VFS;
      }
      }
      具体配置可以参照,github文档

      D. 启动nfs-ganesha服务,执行systemctl start nfs-ganesha,
      然后检查nfs-ganesha状态,执行systemctl reload nfs-ganesha,

      E. client挂载与nfsd client挂载方式一样,挂载成功后,说明nfs-ganesha搭建完成

    nfs服务常见异常问题解决办法

    1.  当nfs 服务器宕机或者nfs服务挂掉时,客户端未进行正常的umount,这时候客户端执行df命令,或者cd 到挂载路径,
       client会hang住,客户端可以执行 umount 挂载路径 -fl
    
    2.  当客户端在服务器的授权正常时,client mount不了服务器的目录,可以在服务器的/var/log/messages中查下,是不是
         nfsd最大块的问题,就是当前nfsd支持传输的最大块大小,不能满足client传输的块大小,
         实质上就是nfsd设置的块大小过小,
         解决办法是:在nfs服务器上执行,echo 1048576 > /proc/fs/nfsd/max_block_size
         内核目前支持的最大块大小为1M
  • 相关阅读:
    Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA
    mysql使用instr
    swagger错误:Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body
    java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
    平行四边形
    transition
    transform
    box-shadow
    text-shadow文字阴影
    linear-gradient线性渐变
  • 原文地址:https://www.cnblogs.com/wanshuafe/p/11802602.html
Copyright © 2011-2022 走看看