NFS服务

NFS:Network File System 网络文件系统,基于内核的文件系统。采用C/S模式,用户和程序可以像访问本地文件一样访问远端系统上的文件。基于RPC(Remote Procedure Call Protocol 远程过程调用)实现

(服务运维)NFS服务原理和共享挂载配置_NFS服务

NFS工作原理

客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

NFS服务端口不固定,RPC的注册中心固定,由注册中心转答所调用的端口。依赖关系存在因为注册中心很重要~

(服务运维)NFS服务原理和共享挂载配置_NFS服务_02

NFS优势:节省本地存储空间,将常用的数据,如:/home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用。可以通过网络挂载盘符的形式展现

NFS服务主要进程

  • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
  • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
  • rpc.lockd 非必要,管理文件锁,避免同时写出错
  • rpc.statd 非必要,检查文件一致性,可修复文件
  • 说明:CentOS 6 开始portmap进程由rpcbind代替
  • NFS只支持unix不支持windos和MacOS,而windos的终端毕竟较多

NFS配置文件:

/etc/exports  #配置文件

/etc/exports.d/*.exports   #或建立配置子文件

NFS配置

文件配置格式

(服务运维)NFS服务原理和共享挂载配置_NFS服务_03

初始化配置

yum install nfs-utils

systemctl enable --now  nfs-server

systemctl status  rpcbind  nfs-server  #看到RPC和NFS均启动正常

(服务运维)NFS服务原理和共享挂载配置_NFS服务_04

查看本次使用端口,RPC端口是不固定的,通过注册中心使客户端找到

(服务运维)NFS服务原理和共享挂载配置_NFS服务_05

ftp是简单应用层协议,nfs是内核级;ftp的一个很大弊端是客户端和服务端都可能有一份文件,nfs可以在线修改,直接挂载。缺点是一般都是用于局域网,因为跨网络可能涉及到防火墙,而nfs端口不固定,实现复杂

(服务运维)NFS服务原理和共享挂载配置_NFS服务_06

配置共享文件

  • ftp和nfs等要做文件夹权限,共享后对应的权限,nfs默认映射nobody用户
  • showmount -e [目标ip] #查看远端共享文件
  • vim /etc/exports  #编辑配置文件;写入计划共享的文件 /home/gx2 *
  • 赋权用户 setfacl -m u:nobody:rwx /home/gx2
  • exportfs -v  #查看当前共享目录和共享对应属性,如读写权限
  • exportfs -r #读取最新配置
  • systemctl restart nfs-server.service #会影响正在编辑的用户

(服务运维)NFS服务原理和共享挂载配置_NFS服务_07

上述挂载是临时,永久挂载vi /etc/fstab

(服务运维)NFS服务原理和共享挂载配置_NFS服务_08

mount -a  #进行挂载

df   #查看挂载情况

共享对应的权限格式:

  • *任何主机可以访问,也可以网段/掩码;
  • *(rw)代表读写,默认只读
  • *(rw,no_root_squash)远程root也是root,提权

由于每个服务器建立的角色不一致,导致最终创建的文件读写不一致,企业里大多都用LDAP(轻量级目录访问协议),所有的账户均从LDAP读取账户信息,类似微软的AD域

NFS为了避免权限不一致问题,解决办法LDAP、前端用户UID手动调整一致、全部压榨成nobody

(服务运维)NFS服务原理和共享挂载配置_NFS服务_09