NFS(Network File
System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。简单来说,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。这可以减少整个网络上可移动介质设备的数量。
实验开始之前准备两台虚拟机 ,规定服务端ip为172.25.254.102,客户端ip为172.25.254.202
在服务端
yum install nfs-utils ##安装服务
systemctl start nfs-server ##开启服务
mkdir /haha ##建立一个共享目录
vim /etc/exports ##编辑该服务的配置文件
/haha * (sync) ##共享目录/haha 允许所有主机访问
exportfs -rv ##刷新
firewall-cmd --permanent --add-service=rpc.bind ##允许服务通过火墙
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=nfs
firewall-cmd --reload ##加载
rpc.bind | 访问这个服务有没有共享 |
mountd | 访问这个服务共享在那里 |
nfs | 询问这个服务是否允许访问共享资源(是nfs共享的资源 |
在客户端
showmount -e 172.25.254.102 ##快速查看102远程服务器共享出来的东西
mount 172.25.254.102:/haha /mnt
手动在客户端挂载分享出来的目录 (客户端这样就可以操作远程服务器的资源)
autofs+NFS形成智能的挂载组合
企业当中的系统存储分离
(集群:具有相同功能的一群主机)
案例: 当一个用户注册的时,会将该用户的信息放在一台主机里面,这个主机如果出现故障,这个用户就无法登陆服务, 当有多个用户分别对应多台主机的时候,每个用户的信息都在自己的服务器里面放着,当其中一个服务器挂了,那个主机的信息就没了。
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册后,主机系统会将客户信息放到存储数据的地方, 每台主机和存储设备相连, 但是当主机不用的时候,没有必要和存储系统连接,浪费资源, 现在想实现客户端用的时候自动挂载,不用的时候自动卸载,就可以使用智能挂载组合
yum install autofs -y ##下载软件autofs
vim /etc/sysconfig/autofs ##编辑软件配置文件(7.0版本时配置文件) /etc/autofs.conf(7.3)版本的配置文件
设定退出默认挂载目录之后3秒 卸载
当没有启动服务时 是没有默认挂载目录的
systemctl start nfs
systemctl start autofs
cd /net/172.25.254.102/haha ##默认挂载目录 /net/服务端ip/分享目录名称
启动服务后可以进入默认挂载目录 默认挂载目录下有之前我们建立的文件
在客户端
默认挂载点是在/net/服务端ip/分享文件名称
现在我们要将/haha目录自动挂载到/mnt/westos目录上
vim /etc/auto.master
/mnt /etc/nfs
/mnt | 最终挂载点的上层目录 |
/etc/nfs | 子策略文件 |
vim /etc/nfs ##编辑子策略文件
westos -ro,vers=3 172.25.254.102:/haha
westos | 最终挂载点 |
-ro | 只读挂载(读写挂载) |
vers=3 | 设定nfs版本为3(默认挂载nfs4版本) |
172.25.254.102:/haha | 挂载设备及分享文件路径 |
systemctl restart autofs ##重启服务
mount ## 查看挂载详情
测试
在客户端进入挂载点 cd /mnt/westos
df ##可以观察到挂载的目录是/mnt/westos
注意:当自定义挂载目录为/mnt/lee/nfs 最终挂载点的上层目录为/mnt/lee
当最终挂载点的上层目录相同时 子策略文件可以是同一个
编辑策略文件
编辑子策略文件
重启服务
测试 成功挂载到/mnt/westos下
查看挂载信息是否修改
NFS 实现网络文件系统共享服务时,会同步客户端和服务器的内存中的数据和硬盘中的数据
两种 数据同步方式 |
---|
sync 效率高 完成所有任务之后在做数据同步 |
async 数据同步稳定 实时同步 |
在服务端
vim /etc/exports
/haha *(sync) 172.25.254.202(rw,anonuid=1003,anongid=1003,no_root_squash)
exportfs -rv
anonuid= | 匿名用户uid设定 建立的文件所有人就是该ip在客户端ip对应的用户 |
anongid= | 匿名用户gid设定 建立的文件所有人就是该ip在客户端ip对应>的用户 |
no_root_squash | 客户端当前身份是超级用户 并且挂载分享目录 建立的文件所有人就是超级用户不做身份转换 |
all_squash | 客户端当前身份是普通用户 并且挂载分享目录 建立的文件所有人要做身份转换的话还要在匿名用户id设定之后加上这个参数 否则身份不会转化 |
在客户端
这个实验我们通过改变在服务端的参数设定 来看客户端的变化
1.读写参数设定
服务端 基础设定允许所有访问/haha这个分享的目录
设定给客户端202 读写挂载 编辑完成后刷新
在202客户端 尝试在共享目录下建立文件 报错只读挂载
查看挂载详情 是只读挂载 因为之前子策略文件中编辑的该文件是只读挂载
因为该共享目录只给了超户写的权限 所以我们在服务端给与其他人写的权限 回到客户端再建立文件就可以建立了(虽然客户端当前身份是超级用户 但是对于服务端来说只是其他人 客户端是没有服务端超户的身份)
2.参数设定——匿名用户UID GID设定
在客户端我们建立文件是可以查看文件的所有人和所有组都是 nfsnobody
回到服务端我们查看一下用户lee的id
我们在服务端设定202虚拟机 匿名用户UID GID设定为1003
在客户端建立文件4 查看属性 该文件的所有人和所有组为1003(因为在客户端1003没有对应的用户 所以直接显示id 如果客户端的1003对应的用户为westos 那么所有人所有组就会显示westos)
3.参数设定——对于超级用户不做身份转换
在服务端编辑超户不转换身份
在客户端当前用户身份是root 建立文件用户身份是root
当我们在客户端切换为普通用户身份时,我们参数中没有设定普通用户不转换身份,但是建立文件的所有人和所有组却没有改变,依旧是当前的普通用户
添加参数 all_squash 之后再在客户端普通用户中建立文件 用户身份发生转变
注意:每次在服务端中更改参数,都要刷新