一、NFS介绍
NFS(Network File System)即网络文件系统,它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。一般客户端挂载到本地目录的名字可以随便,但为方便管理,我们要和服务器端一样比较好。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
NFS最早是由Sun公司发展出来的,
简单的来说:它就是是可以透过网络,让不同的主机、不同的操作系统可以共享存储。
以下是NFS最显而易见的好处:
1. 节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
2. 用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
3. 一些存储设备CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
二、NFS环境搭建
在客户端:
配置好网络172.25.60.100,修改虚拟机名称为client.westos.com
安装好yum源
配置好本地解析
在服务端:
同上,ip为172.25.60.200,名称为server.westos.com
三、NFS部署
在服务端:
yum install nfs-utils.x86_64 -y
systemctl stop firewalld
vim /etc/exports
/mnt 172.25.60.0/24(ro,async) ro代表只读,async代表不实时同步
systemctl start nfs-server
exportfs -rv 刷新,让他生效
在服务端安装完nfs-utils后需要关闭火墙
sync代表内存数据与硬盘里的数据的是同步的(可靠性高)
async不实时同步,会使写的效率提高(响应速度快)可靠性低
nfs不需要重启,用参数exportfs -rv更新(重启之后客户端挂载就出问题了,因为重启就有一个空档期,客户端如果在写,就会一直访问,这个时候会出问题,如果客户端不用,可以重启但是不建议。)
在客户端:
yum install nfs-utils -y
showmount -e 172.25.60.100
mount 172.25.60.100:/mnt /mnt
操作完成后会发现无法在/mnt新建文件,这是因为是只读挂载
取消挂载
在服务端:
修改为读写挂载
刷新exportfs -rv
在客户端:
重新挂载,新建文件
发现请求被拒绝,这是因为服务端文件系统的目录有权限限制
在服务端:
给/mnt权限 chmod 777 /mnt
在客户端:
新建文件
在服务端:
查看
发现新建文件的用户身份是nfsnobody匿名用户
四、NFS管理
修改新建文件的用户身份:
修改为westos用户
在服务端:
useradd westos 新建一个用户westos
id westos 查看用户westos的id
uid=1001(westos) gid=1001(westos) groups=1001(westos)
vim /etc/exports
/mnt 172.25.254.0/24(rw,async,anonuid=1001,anongid=1001)
使得在客户端建立的文件属于服务端的指定的用户westos
exportfs -rv 刷新
在客户端:
在服务端:
修改为root用户
在服务端:
no_root_squash 谁管理用谁的身份并且anonuid不生效(沿用客户端自己的用户身份)
在客户端:
在客户端看见file1的用户和用户组是1001,是因为客户端没有这个用户
在服务端:
查看发现还是westos
修改为其他用户
在服务端:
all_squash 身份全部转换(这个在的时候no_root_squash不生效,anonuid生效,去使用服务端的客户身份,如果不指定anonuid,就沿用服务端的匿名身份)
在客户端:
在服务端:
在客户端:
在服务端:
在客户端显示的是hahaha,但在服务端显示的是westos,因为客户端hahaha的id为1001对应的服务端的用户westos
修改anonuid和anongid为1002
在服务端:
在客户端:
在服务端:
修改no_root_squash和all_squash前后顺序
在服务端:
在客户端:
说明all_squash的优先级高于no_root_squash,当有all_squash时no_root_squash不生效