企业级NFS网络文件共享服务(存储服务器,实时,定时)

1.什么是nfs

  • network file system  通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录
  • nfs客户端(一般是应用服务器,例如web),可以通过过挂载的方式将NFS服务端共享的数据目录挂载到NFS客户端本地系统中,从客户端本地看,NFS服务器端共享的目录就好像客户端自己的磁盘分区或则目录一样,二实际上确实远端的nfs服务端目录

2.nfs的历史介绍

  • 第一个网络文件系统

3.工作原理讲解

  • nfs 本身监听的端口号是2049,但是由于nfs支持的功能相当的多,需要启用的端口号较多,需要由RPC来协助
  • RPC的作用:指定NFS个功能对应的端口号,然后通知给客户端,让客户端可以连接到正确的端口号上
  • NFS:处理客户端数据请求
  • RPC:处理客户端链接请求

4.需要的软件包(rpm -aq nfs-utils rpcbind

  • rpc : rpcbind
  • nfs : nfs-utils
  • yum -y install nfs-utils rpcbind

5.启动服务

  • systemctl start rpcbind  必须先启动这个
  • systemctl start nfs

6.多个进程功能介绍

  • rpc.statd 检查文件一致性
  • rpc.mountd  权限管理验证
  • nfsd 主进程(很多)
  • rpc.idmapd 主进程映射

7.nfs软件结构

  • /etc/nfsmount.conf --> 存放挂载时候会调用的一些参数
  • /etc/exports --> 主配置文件, 由setup程序安装出来.
  • /var/lib/nfs/etab -->日志文件 记录了NFS共享出来的目录完整权限的设置值
  • /var/lib/nfs/xtab -->日志文件 记录了客户端访问NFS服务器的数据信息接!

8. 主配置文件(/etc/exports -)

格式:
共享目录 允许谁来访问我的共享目录(权限)
/project proj*.local.domain(rw)
/share *.local.domain(ro) @trusted(rw)
/home/www pc001(rw,all_squash,anonuid=150,anongid=100)
/public *(ro,insecure,all_squash)
/srv/www -sync,rw server @trusted @external(ro)
/foo 2001:db8:9:e54::/64(rw) 192.0.2.0/24(rw)
/build buildhost[0-9].local.domain(rw)

9、客户端(192.168.1.11)访问

a、查看远程nfs共享的目录是什么,谁可以访问这个目录

命令:showmount -e 192.168.1.10

 

[root@linux-node ~]# showmount -e 192.168.86.11 #192.168.86.11为服务器端ip

Export list for 192.168.86.11:/share 192.168.86.0/24

b,挂载

格式:mount [-t nfs] 服务器端ip:共享目录 挂载点
[root@linux-node ~]# mount 192.168.86.11:/share /mnt

永久挂载(/etc/fstab):
192.168.86.11:/share /mnt nfs defaults 0 0

10、权限问题

1、root用户在 /mnt 创建文件受限,在服务器端把共享目录权限改为 755 后,在里面创建好文件以后,发现文件拥有者和所属组为nobody,主要是因为映射问题 (root_squash)

2、如果root用户创建文件,想让客户端拥有者和所属组也为root,要在服务器端配置权限的时候将映射关系改为 no_root_squash

3、普通用户在 /mnt 目录下创建文件时,服务器端识别到的只有 uid 和 gid,如果服务器找不到,就会将该文件的拥有者和所属组改成 nobody

4、想让所有人在此目录下创建文件,需要在服务器端配置权限的时候加上 all_squash

 

11,更改用户企业案例(nfs优化)

1.vi /etc/exports            /data1 192.168.1.1/24(rw,sync,all_squash,anonuid=888,anongid=888) 服务端

2.useradd -u 888 zuma -s /sbin/nologin -M   创建用户,不需要家目录 不需要登陆

3.创建zuma(mkdir /data1) ,授权zuma(chown -R  zuma.zuma /data1)  

4.挂载 mount -t nfs 192.168.1.10:/data1 /opt

5.usermod -s /bin/bash zuma 更改账户权限能够登陆系统

12.实时同步(nfs+rsync+inotify)

#!/bin/bash
inotify=/usr/local/inotify-tools/bin/inotifywait
$inotify -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,close_write /data

|while read file
do
cd / &&
rsync -az /data --delete rsync_backup@192.168.1.17::backup
--password-file=/etc/rsync.password
done

                            https://www.cnblogs.com/hackerer/p/5243639.html 参考

原文地址:https://www.cnblogs.com/qiulovelinux/p/10401366.html