zoukankan      html  css  js  c++  java
  • NFS 文件系统

    NFS的安装是非常简单的,只需要两个软件包即可,而且在通常情况下,是作为系统的默认包安装的。

    如果没有则安装:

    yum install nfs-utils portmap -y

    NFS服务的主要配置文件

     /etc/exports

    /etc/exports文件内容格式:

    <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
    sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
    async:将数据先保存在内存缓冲区中,必要时才写入磁盘
    r:用户有写入的权限
    w:用户有读取的权限。

    NFS服务器的启动与停止

    启动NFS服务器:

    为了使NFS服务器能正常工作,需要启动portmap和nfs两个服务,并且portmap一定要先于nfs启动。

    service portmap start
    service nfs start

    停止NFS运行时,需要先停止nfs服务再停止portmap服务,对于系统中有其他服务(如NIS)需要使用时,不需要停止portmap服务

    service nfs stop
    service portmap stop

    设置NFS服务器的自动启动状态

    # chkconfig --level 35 portmap on
    # chkconfig --level 35 nfs on     ---设置portmap和nfs服务在系统运行级别3和5自动启动

    相关命令

    1.exportfs                            #exportfs 命令使改动后的/etc/exports文件立刻生效。
    # exportfs [-aruv]
      -a 全部挂载或卸载 /etc/exports中的内容
      -r 重新读取/etc/exports 中的信息,并同步更新/etc/exports、/var/lib/nfs/xtab
      -u 卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
      -v 在export的时候,将详细的信息输出到屏幕上。
    具体例子:
      # exportfs -au 卸载所有共享目录
      # exportfs -rv 重新共享所有目录并输出详细信息。
    2.showmount
      -a 显示已经于客户端连接上的目录信息
      -e IP或者hostname 显示此IP地址分享出来的目录。

    挂载 NFS 文件系统例子

    1.使用 mount 命令来挂载另一个机器上的 NFS 文件系统:

    mount 服务器ip或域名:/misc/export /misc/local     #将服务器端的目录/misc/export挂载到客户端主机/misc/local下。

    例如:

    mount -t nfs 192.168.2.16:/home/ebank/docroot /appsoft/apache16   #将2.16服务器docroot目录下的文件挂载到本机的/appsoft/apache16目录下.

    2.使用 /etc/fstab 来挂载 NFS 文件系统

    要挂载其它机器上的 NFS 共享的另一种方法是在 /etc/fstab 文件中添加一行。这一行中必须声明 NFS 服务器的主机名,要导出的目录,以及要挂载 NFS 共享的本地机器目录。你必须是根用户才能修改 /etc/fstab 文件。
    /etc/fstab 中每行的一般语法如下所示:

    serverip:/usr/local/pub    /pub   nfs    rsize=8192,wsize=8192,timeo=14,intr

    挂载点 /pub 在客户机器上必须存在。在客户系统的 /etc/fstab 文件中把这一行添加完毕后,在 shell 提示下键入命令 mount /pub,以及将会从服务器中挂载到挂载点 /pub。 /

    mount -a 重新加载

    三、实例说明:

    centos系统两台:

    服务器端:192.168.1.200
    客户端: 192.168.1.100

    需求:将服务器端192.168.1.200的/CentOS/opt/目录挂在到客户端1.100的/opt/目录下,并是客户端有读写的权限.

    S/c都关掉iptables防火墙   /etc/init.d/iptables stop

    一、服务器端配置:

    1.查看nfs是否安装 ; rpm -qa nfs

    2.启动nfs服务

    3.配置/ect/exports文件

     [root@localhost /]# more /etc/exports
    /CentOS/opt  192.168.1.200/24(rw)

    4.重新加载exports文件

    [root@localhost /]# exportfs -r

    5.查看服务端输出信息.

    [root@localhost /]# showmount -e          #查看自己共享的信息。
    Export list for localhost.localdomain:
    /CentOS/opt 192.168.1.200/24

    二、客户端配置。

    1. 客户端使用showmount命令查询NFS的共享状态

    [root@localhost /]# showmount -e 192.168.1.200
    Export list for 192.168.1.200:
    /CentOS/opt 192.168.1.200/24

    2.客户端挂载nfs服务器中的共享目录.

    格式:mount NFS服务器IP:共享目录 本地挂载点目录
    mount -t nfs 192.168.1.200:/CentOS/opt/   /opt

    3. 验证是否挂载成功。

    4.使用 /etc/fstab 来挂载 NFS 文件系统

    使用mount挂载时,当服务器重启后挂载就没有了,只有当写入/etc/fstab文件中,客户端重启挂载点也一直存在。

    vi /etc/fstab
    192.168.1.200:/CentOS/opt/ /opt  nfs defaults 0 0

    三、访问权限问题;

      1.客户机的访问权限问题要结合/etc/exports文件的权限和服务器挂载目录的权限,当/etc/exports文件中设置客户机有rw权限时,目录也必须要有写入的权限.客户机才可以有读写的权限。

    2.在生产中,我们/etc/exports中定义的可以机又rw的权限,目录也是rw权限,在客户端建目录是报权限拒绝,因为当时挂载的目录时www用户的,所以在客户端上面用www用户访问创建目录时,客户端和服务端的www用户的id好必须一样,这是在生产中遇到的问题。

    关于NFS启动报错问题:

    [root@toloan-test opt]# /etc/init.d/nfs start

    启动 NFS 服务: [确定]
    关掉 NFS 配额:无法注册服务: RPC:无法接收; errno = 拒绝连接
    rpc.rquotad: unable to register (RQUOTAPROG, RQUOTAVERS, udp).
    [失败]
    启动 NFS mountd:[失败]
    启动 NFS 守护进程:rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)
    rpc.nfsd: unable to set any sockets for nfsd
    [失败]

    正确启动方式:

    root@toloan-test opt]# /etc/init.d/rpcbind start
    正在启动 rpcbind:[确定]
    [root@toloan-test opt]# /etc/init.d/nfs start
    启动 NFS 服务: [确定]
    关掉 NFS 配额:[确定]
    启动 NFS mountd:[确定]
    启动 NFS 守护进程:[确定]
    [root@toloan-test opt]#

    NFS文件系统挂在后客户端目录权限变成4294967294的问题

    在客户端执行10.222上面执行挂载命令:
    mount -t nfs 10.10.10.244:/apps/product/nginx/htdocs/upload      /opt/share/upload/
    ##将服务器端10.244的目录挂载到客户端目录 /opt/share/upload/下
    属主和属组为www用户.挂在后变成4294967294 。
    drwxr-xr-x 2 4294967294 4294967294 4096 8月  13 12:46 upload

    解决办法如下:

    最简单的解决办法就是在NFS的客户端启动rpcidmapd服务,然后你再看挂载的目录用户和组都是对的了,前提是你挂载的那个磁盘目录所属的用户和组,客户端也有。

    root@toloan share]# /etc/init.d/rpcidmapd start
    正在启动 RPC idmapd:[确定]
    [root@toloan ~]# mount -t nfs 10.10.10.244:/apps/product/nginx/htdocs/upload /opt/share/upload/
    [root@toloan ~]# cd /opt/share/
    [root@toloan share]# ll
    总用量 4
    drwxr-xr-x 2 www www 4096 8月  13 12:46 upload
    [root@toloan share]# cd upload/
    [root@toloan upload]# ll
    总用量 0
    -rw-rw-r-- 1 www www 0 8月  13 12:46 1.txt
    [root@toloan upload]#

    客户端启动rpcidmapd后客户端挂载目录正常了....ok 

    nfs服务器端执行showmount -e报错问题

    今天在NFS服务器使用showmount –e查看NFS共享目录时,发现系统一直显示如下错误:
    clnt_create: RPC: Port mapper failure - Timed out

    查询相关资料显示,很有可能是因为NFS服务器的hosts文件中的域名和NFS服务器的IP地址不对应造成的。

    查看NFS服务器的hosts文件,如下:

    more /etc/hosts
    127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4 tt.test.com dev.newsp2p.cn
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    发现NFS服务器的主机名和IP地址记录不在这个文件进行记录。果断添加进去。如下:
    [root@cms ]# hostname
    cms
    [root@cms ]# echo "10.10.100.30 cms" >> /etc/hosts 
    再次使用showmount –e命令查看NFS共享,结果正常了,系统也很快的显示NFS共享。

    挂在成功后在客户端这边的共享目录创建文件后发现权限是nfsnobody的权限,而且访问时客户端ip加路径竟然访问不来资源,最后在/etc/exports中添加no_root_squash参数,然后重启,解决问题.

    /CentOS/opt 192.168.1.200/24(rw,no_root_squash)

    no_root_squash:登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!
    root_squash:在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID 与 GID 都会变成 nobody 那个系统账号的身份。

  • 相关阅读:
    java基础
    HDOJ(HDU).2266 How Many Equations Can You Find (DFS)
    POJ.1416 Shredding Company (DFS)
    HDOJ(HDU).2044-2049 递推专题
    HDOJ(HDU).1045 Fire Net (DFS)
    HDOJ(HDU).1258 Sum It Up (DFS)
    HDOJ(HDU).1241 Oil Deposits(DFS)
    我的ACM参赛故事
    HDOJ(HDU).1035 Robot Motion (DFS)
    HDOJ(HDU).1016 Prime Ring Problem (DFS)
  • 原文地址:https://www.cnblogs.com/saneri/p/6095034.html
Copyright © 2011-2022 走看看