• centos7 配置nfs


    搭建nfs服务器,服务端配置如下:

    [root@x160 ~]# yum -y install nfs-utils
    [root@x160 ~]# systemctl start nfs-server
    [root@x160 ~]# systemctl enable nfs-server
    [root@x160 ~]# mkdir /dataweb
    [root@x160 ~]# echo "welcome to web" >/dataweb/index.html

      

    [root@x160 ~]# cat <<eof >/etc/exports 
    -/webdata 192.168.0.1/24(rw,no_root_squash)
    -eof 
    查看nfs共享配置 
    [root@x160 ~]# exportfs -v 
    /webdata 192.168.0.1/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash) 
    关闭防火墙 
    [root@x160 ~]# systemctl stop firewalld;systemctl disable firewalld;setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
    

      

     客户端配置:

    关闭防火墙 
    [root@x170 ~]# systemctl stop firewalld;systemctl disable firewalld;setenforce 0;sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
    [root@x170~]# yum -y install nfs-utils

    配置本机hosts文件,添加域名解析 [root@x170~]#echo "192.168.0.104 nas" >> /etc/hosts
    查看nfs服务器共享目录
    [root@x170~]# showmount -e nas
    Export list for nas:
    /webdata 192.168.0.1/24
    
    安装web服务
    [root@x170~]#yum install -y httpd
    [root@x170~]#systemctl start httpd;systemctl enable httpd
    [root@x170 html]# ps -ef | grep http
    root       2978      1  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    apache     2979   2978  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    apache     2980   2978  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    apache     2981   2978  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    apache     2982   2978  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    apache     2983   2978  0 16:35 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
    root       3045   1145  0 16:47 pts/0    00:00:00 grep --color=auto http

    手动挂在nfs共享目录到web网站根目录 [root@x170~]#mount -t nfs nas:/webdata /var/www/html [root@x170 html]# df -Th Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/centos-root xfs 37G 4.3G 33G 12% / devtmpfs devtmpfs 243M 0 243M 0% /dev tmpfs tmpfs 254M 0 254M 0% /dev/shm tmpfs tmpfs 254M 4.6M 249M 2% /run tmpfs tmpfs 254M 0 254M 0% /sys/fs/cgroup /dev/sda1 xfs 1014M 125M 890M 13% /boot tmpfs tmpfs 51M 0 51M 0% /run/user/0 nas:/webdata nfs4 37G 13G 25G 34% /var/www/html
    自动挂载nfs共享目录到web网址根目录
    
    [root@x170~]#echo "nas:/webdata  /var/www/html  nfs  defaults 0 0" >> /etc/fstab
    [root@x170~]#mount -a 
    [root@x170 html]# df -Th
    Filesystem              Type      Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root xfs        37G  4.3G   33G  12% /
    devtmpfs                devtmpfs  243M     0  243M   0% /dev
    tmpfs                   tmpfs     254M     0  254M   0% /dev/shm
    tmpfs                   tmpfs     254M  4.6M  249M   2% /run
    tmpfs                   tmpfs     254M     0  254M   0% /sys/fs/cgroup
    /dev/sda1               xfs      1014M  125M  890M  13% /boot
    tmpfs                   tmpfs      51M     0   51M   0% /run/user/0
    nas:/webdata            nfs4       37G   13G   25G  34% /var/www/html
    

      

     

    通过物理机浏览器正常访问,如下图:

    因为nfs服务器设置的目录共享权限是no_root_squash,所以可以在web服务器端使用root账号修改nfs共享文件内容

    [root@x170 html]# vim /var/www/html/index.html
    1111111111111welcome to web
    

      

    通过物理机浏览器访问,发现内容也同步更新。如下图: 

     

     至此,centos7 中的nfs配置完成。

    nfs服务的firewall防火墙设置

    配置端口,经测试,可以不用配置。

    默认设置中 nfs 端口是2049,portmapper 的端口是111,mountd 端口是20048,status 和 nlockmgr 是随机端口。如需进行防火墙开放端口的设置,修改如下,否则跳过:
    修改 /etc/sysconfig/nfs 文件

    sudo vi /etc/sysconfig/nfs
    #增加端口配置如下一行,对应 rpc.statd 服务,显示status
    STATD_PORT=2050

    因 nfslock 服务会自动开启 rpc.statd,无需做设置;在rpcinfo -p 映射中,rpc.statd 对应 status ,后续再次修改端口后重启服务使配置生效的

    sudo systemctl restart nfs-lock

    修改 /etc/modprobe.d/lockd.conf 文件。Network Lock Manager (NLM),对应是 nlockmgr

    sudo vi /etc/modprobe.d/lockd.conf 
    #增加端口配置如下两行
    options lockd nlm_tcpport=2051
    options lockd nlm_udpport=2051

    4、开启NFS服务,设置服务开机自启动,按顺序先 rpcbind 后 nfs

    rpcbind主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务。

    sudo systemctl start rpcbind.service
    sudo systemctl start nfs.service
    sudo systemctl enable rpcbind.service
    sudo systemctl enable nfs.service

    sudo systemctl start rpcbind nfs-server
    sudo systemctl enable rpcbind nfs-server

    查看共享是否成功

    showmount -e localhost

    或用exportfs -arv命令,重新使配置文件生效,并显示生效内容 

    sudo exportfs -arv

     查看服务对应端口的命令

    rpcinfo -p

    5、防火墙设置
    查看防火墙是否在运行

    sudo firewall-cmd --state

    显示 running 则加上放行规则,否则跳过

    sudo firewall-cmd --permanent --add-port=111/tcp
    sudo firewall-cmd --permanent --add-port=111/udp
    sudo firewall-cmd --permanent --add-port=2049-2051/tcp
    sudo firewall-cmd --permanent --add-port=2049-2051/udp
    sudo firewall-cmd --permanent --add-port=20048/tcp
    sudo firewall-cmd --permanent --add-port=20048/udp
    sudo firewall-cmd --reload
    sudo firewall-cmd --add-service=nfs --permanent
    sudo firewall-cmd --reload

    -----------------------------------------------------------------------------------------------

    NFS的常用目录

    文件目录用途
    /etc/exports NFS服务的主要配置文件,系统并没有默认值,是空文件,如这个文件不存在,需要自己创建
    /usr/sbin/exportfs NFS服务的管理命令
    /usr/sbin/showmount 客户端的查看命令
    /var/lib/nfs/etab 记录NFS分享出来的目录的完整权限设定值,即服务器配置的参数(包含默认的参数)
    /var/lib/nfs/xtab 记录曾经登录过的客户端信息

    NFS的配置文件:
    /etc/exports:NFS配置文件
    /var/lib/nfs/*tab:NFS服务器日志放置路径;etab记录共享出来的目录完整权限设置值;xtab记录曾经连接到此NFS主机的相关客户端数据

    NFS的两个命令:
    /usr/sbin/exportfs:维护NFS共享资源;重新共享/etc/exports变更目录或将NFS server共享目录卸载或重新共享
    /usr/sbin/showmount:在客户端查看NFS服务器共享出来的目录资源

    7、NFS的主要配置文件 /etc/exports 的内容格式

    复制代码
    <输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)]
    a. 输出目录:
    输出目录是指NFS系统中需要共享给客户机使用的目录;
    
    b. 客户端:
    客户端是指网络中可以访问这个NFS输出目录的计算机
    
    客户端常用的指定方式
        指定ip地址的主机:192.168.0.200
        指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0
        指定域名的主机:david.bsmart.cn
        指定域中的所有主机:*.bsmart.cn
        所有主机:*
    
    c. 选项:
    选项用来设置输出目录的访问权限、用户映射等。
    
    NFS主要有3类选项:
    访问权限选项
        设置输出目录只读:ro
        设置输出目录读写:rw
    
    用户映射选项
        all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);
        no_all_squash:与all_squash取反(默认设置);
        root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);
        no_root_squash:与rootsquash取反;
        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服务器也不检查其父目录的权限,这样可以提高效率;
    复制代码

    例如

    / user01(rw) user02(rw,no_root_squash)

    表示共享服务器上的根目录(/)只有user01和user02两台主机可以访问,且有读写权限;user01主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;user02主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录。在配置文件中,使用了no_root_squash ,所以root用户不受约束,在 user02 机器上到挂载点下,到共享目录下,就可以像在本地磁盘使用root用户一样,是不受限制的(通常情况下,不限制root用户的比较多,要注意安全问题)

    /root/share/ 192.168.1.2(rw,insecure,sync,all_squash)

    表示共享服务器上的/root/share/目录只有192.168.1.2主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

    /home/ylw/ *.test.com (rw,insecure,sync,all_squash)

    表示共享/home/ylw/目录,*.test.com域中所有的主机都可以访问该目录,且有读写权限

    /home/share/ .test.com (ro,sync,all_squash,anonuid=zh3,anongid=wa4)

    表示共享目录/home/share/,*.test.com域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为zh3、gid为wa4的用户

    -----------------------------------------------------------------------------------------------

  • 相关阅读:
    TP框架模板中IF Else 如何使用?
    Append 后如何使用 fadein淡入效果
    ThinkPad如何修改fn键默认操作
    TP框架ajax U方法不解析怎么办?
    thinkphp session如何取数组
    FTP服务搭建
    Linux系统学习之字符处理
    如何使用zabbix初级监控
    项目同步部署
    巡检常用命令
  • 原文地址:https://www.cnblogs.com/xiaofeng666/p/13220080.html
Copyright © 2020-2023  润新知