zoukankan      html  css  js  c++  java
  • linux服务之NFS服务篇

    一、概念

    NFSNetwork File Server 网络文件系统(映射)。网络文件系统是FreeBSD支持的文件系统中的一种,也被称为NFS NFS允许一个系统在网络上与他人共享目录和文件。

    作用:用于Linux系统间进行文件共享

    优点:配置简单,使用方便

    缺点:兼容性差,安全性低

    应用:机房集群内部的服务器共享,企业里常用nfs搭建存储系统(盘阵系统)

    模式:C/S 模式

    端口:NFS通常运行于2049端口

    二、部署NFS

    注意:

    1、由于在使用NFS服务进行文件共享之前,需要使用RPCRemote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。所以,在启动nfs之前,需要先查询rpcbind状态,如果该服务为停止状态,需要先启用rpcbind,再启用nfs

    2、图形界面会自带nfs,所以无需执行第一步骤,最小化安装时,客户端和服务端都需要安装;

    3、步骤中的挂载,需在客户端上执行;

    4、在设置挂载目录时,需要注意绝对路径,且该目录是否允许访问;

    5设置共享目录的权限时,除了服务权限,还要注意系统权限。

    搭建步骤:

    1、下载安装

    # yum install nfs-utils -y

    2、启动

    # systemctl start nfs #开启后最好查询一下状态:systemctl status nfs

    3、配置

    # vim /etc/exports

    /PATH HOSTNAMErw/ro

    共享地址 客户机的IP  共享权限

    /ken 172.20.10.7(rw) #给特定的ip共享,rw表示权限

    /data *(rw) #给所有ip 共享   

    /data 172.20.10.0/28(rw)  #把网段共享出去 28表示掩码 

    /data 172.20.10.0/28(rw)  192.168.64.0/24(rw)  #设置多个网络

    注意:* 表示对所有网段开放权限

    nfs也可以共享多个目录

    /ken 192.168.64.5(rw)

    /test 192.168.64.7(rw)

    4、刷新

    # exportfs -r

    更改属主:#chown -R nfsnobody:nfsnobody /home/renyz

    或者更改权限:#chmod 757 /home/renyz

    5、客户端挂载使用(客户端需要下载nfs-utils

    # mount -t nfs ServerIP:/PATH /LocalIDIR

    # mount 服务机IP/共享目录 /本地目录

    # showmount -e ServerIP  #查看共享

    6、开机自动挂载

    服务机IP/共享目录 /本地目录 nfs default 0 0 /etc/fstab

    三、autofs(客户端操作)

    nfs 是长连接的服务(客户端挂载完成之后,客户端与服务端之间连接一直保持,不管有无数据传输)

    优点:响应速度快;缺点:浪费资源

    自动挂载取消挂载的服务(15分钟后自动解挂)

    1、安装

    # yum install autofs -y

    2、配置主配文件

    # vim /etc/auto.master

    /misc   /etc/auto.misc

    #客户端挂载点目录 /etc/auto.misc

    # 陷阱        规则文件

    # 进入左边的路径将执行右边的规则

    3、配置规则文件

    # vim /etc/auto.misc

    触发点 执行规则(命令)

    cd  -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom

    1   -fstype=nfs,rw  192.168.11.3:/renyz/1

    2   -fstype=nfs,rw  192.168.11.3:/renyz/2

    4、重启autofs服务

    # systemctl restart autofs

    5、测试

    四、SSH

    SSHSecure Shell缩写,由IETF的网络小组所制定。SSH为建立在应用层基础上的安全协议。SSH是目前较可靠的,为远程登录会话和其他网络服务提供安全性的协议。

    使用格式:ssh USERNAME@HOSTNAME

    注意:其中USERNAME是服务端的用户名称,HOSTNAME是服务器的访问地址。

    五、挂载问题一

    1、问题起因:

    在配置好一台NFS服务器,建立好分享目录,刷新配置以后,在另一台客户机中使用showmount -e 出现报错:

    clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)

    2、问题原因:

    服务端的防火墙上默认没有开启nfs服务相应的端口

    3、解决办法:

    (1)简单粗暴地关闭防火墙

    systemctl stop firewalld

    如果开启了iptables的话,也是一样的,iptables的策略里也默认不会为nfs服务开启需要的端口

    systemctl stop iptables

    (2)在防火墙上开启端口

    在设置了防火墙的环境中使用NFS,需要在防火墙上打开如下端口:

    1. portmap 端口 111 udp/tcp;
    2. nfsd 端口 2049 udp/tcp;
    3. mountd 端口 "xxx" udp/tcp
    系统 RPC服务在 nfs服务启动时默认会为 mountd动态选取一个随机端口(32768--65535)来进行通讯,我们可以通过编辑/etc/services 文件为 mountd指定一个固定端口:
    # vim /etc/services
    在末尾添加

    mountd 1011/udp
    mountd 1011/tcp

    wq退出保存该文件

    # stopsrc -s rpc.mountd
    # startsrc -s rpc.mountd
    # exportfs -a
    # rpcinfo -p Hostname
    现在我们会发现 mountd已经和端口 1011绑定了。

    另外,nfs中需要通讯的服务还有 rpc.lockd和 rpc.statd,其中对lockd我们可以用类似的方法来指定固定端口,
    # vim /etc/services
    添加

    lockd 35000/ucp
    lockd 35000/tdp

    # stopsrc -s rpc.lockd

    # startsrc -s rpc.lockd
    # exportfs -a
    nfs客户端mount文件系统
    # rpcinfo -p Hostname

    但 rpc.statd无法通过该方法来指定端口,它只能使用随机端口,如有必要,在防火墙上要根据下面命令的显示来开放随机端口:

    # no -a |grep ephemeral
    tcp_ephemeral_high = 65535
    tcpp_ephemeral_low = 32768
    udp_ephemeral_high = 65535
    udp_ephemeral_low = 32768

    当然也可以不开放 rpc.statd需要的随机端口,带来的影响就是如果 nfs连接中断(比如server或client宕掉了),系统将无法通过statd来恢复连接中断前的状态,而必须重新 mount该nfs文件系统。

    有关statd的详细功能说明,请参阅 http://publib.boulder.ibm.com/infocenter/
    pseries/v5r3/topic/com.ibm.aix.cmds/doc/aixcmds5/statd.htm

    六、挂载问题二

    用mount挂载时却出现“access denied by server while mounting”这个错误;

    原因及解决办法:

    1、使用了非法端口,也就是使用了大于1024的端口。
    这个错误,可以通过查看日志确认:
    [root@local~ /]# cat /var/log/messages | grep mount
    Jan 2 12:49:04 localhost mountd[1644]: refused mount request from 192.168.0.100 for /home/nfsshare/ (/home/nfsshare): illegal port 1689
    解决办法:
    修改配置文件/etc/exports,加入 insecure 选项,重启nfs服务,再尝试挂载。
    /home/nfsshare/  *(insecure,rw,async,no_root_squash)
    2、NFS版本问题
    编辑/etc/sysconfig/nfs文件,找到下面:

    #Turn off v2 and v3 protocol support 
    #RPCNFSDARGS="-N 2 -N 3" 
    #Turn off v4 protocol support 
    #RPCNFSDARGS="-N 4"  /*把这句前面的#号去掉*/
    

    最后保存,重启nfs服务,再尝试挂载;如果挂载不上,可尝试在后面加-o nolock参数。
    3、查看客户端挂载的目录是否具备读写权限,添加相应权限即可。
    4、nfs服务器上的/etc/hosts中设置了客户端机器IP对应域名,去掉即可。
    通过以上这几种方法,access denied by server while mounting这个错误应该可以得到解决了。

     

  • 相关阅读:
    20145312 实验四《Andoid开发基础》
    20145312 《Java程序设计》第九周学习总结
    20145312 《Java程序设计》第八周学习总结
    20145312 实验三《敏捷开发与XP实践》
    20145312 《Java程序设计》第七周学习总结
    20145312 实验二《 Java面向对象程序设计》
    20145309李昊 信息安全系统设计基础第1周学习总结
    20145309《信息安全系统设计基础》第0周学习总结
    20145303课程总结
    20145215刘俊谦实验五 Java网络编程及安全
  • 原文地址:https://www.cnblogs.com/renyz/p/11226800.html
Copyright © 2011-2022 走看看