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 [email protected]::backup \
--password-file=/etc/rsync.password
done
https://www.cnblogs.com/hackerer/p/5243639.html 参考