NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
1.服务器端搭建nfs文件系统,客户端实现网络挂载
服务器端:
yum install nfs-utils //安装服务
systemctl start nfs-server //开启服务
systemctl stop firewalld //关闭火墙
vim /etc/exports编辑该服务的配置文件 //man 5 exports查看这个文件里面的书写格式
/mnt 172.25.254.0/24(ro,async)
exportfs -rv //刷新
客户端:
yum install nfs-utils -y //客户端也需要安装与服务器端相同的软件
showmount -e 172.25.60.1 //查看远程共享;可以看到/mnt
mount 172.24.60.1:/mnt/ /mnt/ //挂载服务端的目录到本地
df查看挂载
cd /mnt/进入这个目录 实际上进入了服务器的目录
ls查看服务器的这个目录里面的内容
touch file失败,因为只读(其实就是对远程主机操作)比较慢
2.客户端实现挂载,并可写
上面的挂载是只读挂载:当客户端建立文件失败,因为只读。
为实现客户端可写:
第一步:修改配置文件
第二步:服务允许读写不一定可写,应修改文件系统权限,使其可写:
客户端测试:此时再建立文件file便可成功
3.客户端建立东西所属用户的身份设置
(1)指定客户端的用户身份为服务端已经存在的用户身份: 客户端建立文件的身份是服务端指定的服务端自己存在的用户,客户端不存在这个用户。
第一步:在服务器端建立新用户
第二步:修改配置文件,指定客户端以tom的身份建立文件
测试:客户端建立文件,在客户端与服务器端分别查看,与服务器配置文件中指定的相符
(2)沿用客户端挂载的用户身份: no_root_squash;客户端以哪个身份建立文件,文件就属于客户端哪个用户的
第一步:服务器端修改配置文件
第二步:客户端建立新用户,并使用新用户的身份建立文件
第三步:服务器端查看
- file4属于1002,与客户端westos1的id对应,所以file4应属于客户端的westos1用户
- file3看上去属于tom,其实只是id的影射(tom与westos的id相同),本质上file3属于客户端的westos用户
(3)转变所有的客户端的用户身份为服务端的用户身份: all_squash;不管客户端以哪个身份建立文件,文件的所有人所有组均为服务器指定转换为服务器自己存在的用户身份
第一步:服务器端修改配置文件
第二步:在客户端建立文件,并查看
第三步:服务器端查看
nfs在企业里面的用处:使企业中系统和存储分离
实际在企业当中,主机系统和存储数据是分离的,客户通过主机注册系统,然后放到存储数据的地方,每台主机和存储设备相连。但是当主机不用的时候,没有必要和存储系统连接,浪费资源。现在想实现客户端用的时候自动挂载,不用的时候自动卸载。
4.实现nfs服务器在客户端的自动挂载和自动卸载
(1)客户端安装软件 autofs
(2)实现自动挂载:进入服务器就会自动挂载
systemctl stop autofs.service //关闭这个服务
ls -l /net //没有这个目录
systemctl start autofs.setvice //开启这个服务
ls -l /net //有这个目录
cd /net //进入
ls //查看什么都没有
cd 172.25.254.111/mnt/ //进入服务器
pwd //显示当前路径
df //查看有没有自动挂载
(3)自动卸载:配置文件中默认为300s,等五分钟后就会自动卸载,为了实验效果,修改默认时间
rpm -qa | grep autofs //查看软件版本
rpm -qc autofs //查看配置文件,版本不一样,配置文件不一样
修改配置文件/etc/autofs.conf,更改默认卸载时间
- 注:时间不到不要df查看,查看一次就执行一次
5.autofs挂载策略
(1)更改自动挂载目录:默认挂载到/net,现在想改变挂载策略,将服务端的目录挂载到我的客户端我想挂载的任何目录上。
第一步:编辑主策略文件/etc/auto.master
第二步:在子策略文件/etc/auto,nfs中编写挂载策略
测试:客户端进入自动挂载目录
cd /mnt/westos
df //可以看到172.25.254.1:/mnt挂载到指定的/mnt/westos上面
(2)设置自动挂载类型:
mount--查看挂载类型
用mount查看(1)中的挂载类型:
挂载时手动指定挂载类型:
编辑子策略文件,设置自动挂载类型
测试:进入挂载目录,查看挂载类型
(3)实现客户端被挂载的目录和服务端的名字匹配
第一步:在服务器端创建需要挂载的目录
第二步:修改客户端子策略文件
第三步:客户端查看,实现了名字的对应统一
- 注:当出现了服务器端没有的名字,只需要在服务器端建立,然后客户端重启服务即可。
服务器端没有对应的目录,进入时报错:
在服务器端建立对应的目录:
最后客户端重启服务,再次进入就好了