NFS文件共享服务器

简介:NFS(Network File System)网络文件系统,它主要的功能是通过网络(局域网),让不同的机器、不同的操作系统可以共享彼此的目录或文件,将共享的目录挂载到本地的文件系统,一般用来存储共享视频和图片等静态数据,常用在集群架构后端进行数据共享,NFS依赖负责信息传输的RPC协议。

一、NFS入门

  1. NFS服务软件

     A. 需要开启mountd、nfsd、nlockmgr、portmapper、rquotad这5个服务, 除了nfsd和portmapper服务端口是固定的,其余都是随机分配的

     B. nfsd:是nfs的守护进程,不负责文件存储(由NFS服务器本地内核负责调度存储),用于理解客户端发起的rpc请求,并将其转交给本地内核,而后存储在指定的文件系统上;

     C. mountd:mountd的服务端口是随机的,由rpc服务(portmapper)提供随机端口号,用于验证客户端是否在允许访问此NFS文件系统的客户端列表中,在则允许访问(发放一个令牌,持令牌去找nfsd),否则拒绝访问;

     D. idmapd:实现用户帐号的集中映射,把所有的帐号都映射为NFSNOBODY,但是在访问时却能以本地用户的身份去访问;

     E. portmapper:NFS服务器的rpc服务,用于管理远程过程调用(RPC);

     F. rpcbind:即RPC主程序;

  2. NFS常用目录或文件

    A. /etc/exports:NFS主要配置文件;

    B. /usr/sbin/showmount:客户端的查看命令;

    C. /var/lib/nfs/etab:查看服务端配置目录的完整权限;

    D. /usr/sbin/exportfs:维护NFS分享资源的指令;

  3. 端口

    A. 查看RPC的端口映射:rpcinfo -p;

    B. nfs默认端口是2049(tcp/udp);

    C. portmapper默认端口是111(tcp/udp);

    D.  mountd、idmapd、rpcbind三个是随机端口;

    E. 固定端口编辑/etc/sysconfig/nfs文件,然后reboot即可。

RQUOTAD_PORT=2050
LOCKD_TCPPORT=2051
// 注意不能共端口 LOCKD_UDPPORT=2052 MOUNTD_PORT=2048 STATD_PORT=2053

  4. /etc/exports配置文件

    A. 格式:<输出目录> [客户端1 选项(访问权限,用户映射,其他)] [客户端2 选项(访问权限,用户映射,其他)],例如/rhxy/nfs 192.168.1.1(rw);

    B. 配置参数

      ro—>设置输出目录只读权限;

      rw—>设置输出目录可读可写权限;

      root_squash—>当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户;

      no_root_squash—>当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员;

      all_squash—>无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户;

      sync—>同时将数据写入到内存与硬盘中,保证不丢失数据;

      async—>将数据先保存到内存缓冲区,然后再写入硬盘;

 

二、NFS服务部署

  1. 安装NFS和RPC:yum install -y nfs-utils rpcbind;

  2. 先启动RPC服务,再启动NFS服务,,否则提示cint_create: RPC: Program not registered

    systemctl start rpcbind  systemctl enable rpcbind;

    systemctl start nfs-server systemctl enable nfs-server;

  3. 关闭防火墙:systemctl stop firewalld;

  4. 配置共享文件目录,编辑配置文件:

    vi /etc/exports;

    编写/rhxy/nfs 192.168.1.0(rw)

     systemctl reload nfs;

  5. 查看NFS挂载配置:showmount -e 192.168.0.1;

  6. 在客户端创建目录并共享目录

    A. 永久生效挂载:vi /etc/fstab

      编写192.168.1.0:/public  /rhxy/nfs      nfs    defaults 0 0

      mount -a 使/etc/fstab文件生效;

      Shell:echo "192.168.1.0:/public /rhxy/nfs nfs defaults 0 0' >> /etc/fstab && mount -a

    B. 临时生效挂载:mount -t nfs 10.12.10.11:/data/nfs/nacos/init.d /var/lib/docker/volumes/rhxy-main_nacos/_data;

    C. 卸载挂载:umount /var/lib/docker/volumes/rhxy-main_nacos/_data;

  7. 检查挂载情况:df -Th;

  8. docker集群目录挂载,为了避免每个节点上面去配置NFS挂载和映射,使用volume nfs即可完成,查看数据卷用docker volume inspect ***;

  9. 设置nfs服务端只能指定机器访问,顺便解决漏洞问题

iptables -A INPUT -m iprange --src-range 10.12.108.100-10.12.108.115 -p tcp -m multiport --dports 111,2049,20048 -j ACCEPT
iptables -A INPUT -m iprange --src-range 10.12.108.100-10.12.108.115 -p udp -m multiport --dports 111,2049,20048 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 111,2049,20048 -j DROP
iptables -A INPUT -p udp -m multiport --dports 111,2049,20048 -j DROP

 

可参考:docker下使用NFS服务共享

 

posted @ 2021-06-05 13:26  如幻行云  阅读(177)  评论(0编辑  收藏  举报