• NFS配置使用


    NFS配置使用

    一、概述

    服务器环境:CentOS7
    NFS服务器ip:192.168.1.100
    客户端ip:192.168.1.101
    
    期望:在NFS服务器上共享一个目录,在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。
    
    --
    部署NFS服务所需用到的软件
    nfs-utils:NFS服务的全程序,包括rpc.nfsd、rpc.mountd这两个daemons和相关文档说明,以及执行命令文件等。
    rpcbind:Centos.x下面RPC的主程序。NFS可视为一个rpc程序,在互动任何一个RPC程序之前,需要做好端口和功能的对应映射工作,这个映射工作就是由RPCBIND服务来完成的。因此,在提供NFS服务之前必须先启动RPCBIND服务。
    

    二、NFS服务器端安装和配置

    2.1.服务端安装

    yum install -y rpcbind nfs-utils
    

    2.2.服务端配置

    mkdir -p /data/nfs
    chown -R nfsnobody.nfsnobody /data/nfs
    echo "/data/nfs 192.168.1.101(rw,sync)">/etc/exports
    

    2.3.防火墙安全配置

    2.3.1.方案一、关闭防火墙或对内网所有端口开放

    #关闭防火墙-firewalld方式配置
    systemctl stop firewalld  #停止firewall
    systemctl disable firewalld #禁止firewall开机启动
    
    #关闭防火墙-iptables方式配置
    systemctl stop iptables  #停止iptables
    systemctl disable iptables #禁止iptables开机启动
    
    
    #指定ip开放所有端口-firewall方式配置
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.101" accept'
    firewall-cmd --reload
    
    #指定ip开放所有端口-iptables方式配置
    iptables -A INPUT -s 192.168.1.101 -p all -j ACCEPT
    service iptables save
    

    2.3.2.方案二、防火墙不关闭,开放指定端口号

    由于rpc和nfs除了使用111和2049端口号外,还会部分端口号是动态的,故需要先配置为静态端口
    编辑/etc/sysconfig/nfs,末尾增加如下内容
    RQUOTAD_PORT=30001
    LOCKD_TCPPORT=30002
    LOCKD_UDPPORT=30002
    MOUNTD_PORT=30003
    STATD_PORT=30004
    
    #firewall方式配置开放端口111,2049,30001,30002,30003,30004
    firewall-cmd --zone=public --add-port=111/tcp --add-port=111/udp --add-port=2049/tcp --add-port=2049/udp --add-port=30001/tcp --add-port=30001/udp --add-port=30002/tcp --add-port=30002/udp --add-port=30003/tcp --add-port=30003/udp --add-port=30004/tcp --add-port=30004/udp --permanent
    firewall-cmd --reload
    
    #iptables方式配置开放端口111,2049,30001,30002,30003,30004
    iptables -I INPUT -s 192.168.1.101 -p tcp -m multiport --dports 111,2049,30001,30002,30003,30004 -m comment --comment "NFS服务" -j ACCEPT
    service iptables save
    systemctl restart iptables.service
    

    2.4.启动NFS服务

    systemctl start rpcbind #启动rpcbind
    systemctl enable rpcbind #配置rpcbind开机启动
    
    systemctl start nfs-server #启动nfs
    systemctl enable nfs-server #配置nfs开机启动
    
    
    rpcinfo -p localhost #查看注册端口情况
    showmount -e localhost #查看自己共享的服务
    

    三、NFS客户端安装和配置

    3.1.客户端安装

    yum install -y rpcbind nfs-utils
    systemctl stop rpcbind
    systemctl enable rpcbind
    

    3.2.客户端配置

    #客户端查看服务器共享目录
    showmount -e 192.168.1.100
    
    #挂载目录
    mkdir -p /data/uploads
    mount -t nfs 192.168.1.100:/data/nfs /data/uploads
    
    #查看挂载情况
    df -h
    
    #配置开机自动挂载
    echo "mount -t nfs 192.168.1.100:/data/nfs /data/uploads" >>/etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
    

    3.3.测试验证

    #测试验证
    客户端 echo 'hello'> /data/uploads/hello.txt
    服务端查看 ls /data/nfs/
    

    3.4.其他

    #解除挂载:
    umount /data/uploads
    

    四、/etc/exports参数说明

    /data/nfs 192.168.1.101(rw,sync)
    
    的意思是把共享目录/data/nfs共享给192.168.1.101这个客户端ip,只允许192.168.1.101这个主机有访问权限,后面括号里的内容是权限参数,其中:
    
    rw 表示设置目录可读写。
    sync 表示数据会同步写入到内存和硬盘中,相反 async 表示数据会先暂存于内存中,而非直接写入到硬盘中。
    
    如果想让另外一台主机也可以挂载这个目录,那么直接在后面追加即可,比如:
    /data/nfs 192.168.1.101(rw,sync) 192.168.1.102(rw,sync)
    
    多个目录可以每行配置一个,如果想让这个网段的主机都可以访问,
    假如此时子网掩码是255.255.255.0,网关是192.168.1.0,那么ip那里可以写成192.168.1.0/24表示允许地址段的所有主机访问
    /data/nfs 192.168.1.0/24(rw,sync)
    也可以这种格式配置
    /data/nfs 192.168.1.*(rw,sync)
    
    客户端常用的指定方式
    指定ip地址的主机:192.168.1.101
    指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
    指定域名的主机:david.bsmart.cn
    指定域中的所有主机:*.bsmart.cn
    所有主机:*
    访问权限选项
    
    设置输出目录只读:ro
    设置输出目录读写:rw
    用户映射选项
    all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
    no_all_squash:与all_squash取反(默认设置);
    root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置),即如果访问NFS Server共享目录的用户是root,则它的权限将压缩成匿名用户,同时它的UID和GID通常会变成nfsnobody账号身份。;
    no_root_squash:与rootsquash取反,访问NFS Server共享目录的用户如果是root的话,它对该共享目录具有root权限,这个配置原本是为无盘客户端准备的。谨慎使用;
    anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);
    anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);
    
    其它选项
    secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);
    insecure:允许客户端从大于1024的tcp/ip端口连接服务器;
    sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;
    async:将数据先保存在内存缓冲区中,必要时才写入磁盘,大数据场景可使用;
    wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);
    no_wdelay:若有写操作则立即执行,应与sync配合使用;
    subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);
    no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;
    

    五、更多参考资料

  • 相关阅读:
    SharePoint客户端开发:增加用户信息到用户信息列表
    Query Options的一些用法(5):日历的处理
    User Profile Service卡在Starting的解决方法
    python enumerate用法
    希腊字母的发音
    在Linux下安装go语言环境
    Gradle的安装与使用
    学习正太分布及极差、移动极差、方差、标准差等知识点
    招聘还是炫耀,设计模式是装逼利器?
    Silverlight + RIA Service的SUID的实例。
  • 原文地址:https://www.cnblogs.com/huligong1234/p/13547359.html
Copyright © 2020-2023  润新知