一、什么是nfs文件系统共享?
NFS(Network FileSystem)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源
在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样
二、nfs文件系统的优点?
节省本地存储空间,将常用的数据存放在一台NFS服务器上且可以通过网络访问,那么本地终端将可以减少自身存储空间的使用。
用户不需要在网络中的每个机器上都建有Home目录,Home目录可以放在NFS服务器上且可以在网络上被访问使用。
一些存储设备如软驱、CDROM和Zip(一种高储存密度的磁盘驱动器与磁盘)等都可以在网络上被别的机器使用。
这可以减少整个网络上可移动介质设备的数量。
特点:用的时候挂载,不用的时侯自己卸载
客户端与服务端连接步骤:
- showmount #客户端查看共享端口
- rpc-bind #服务端告诉客户端(showmount)有没有共享端口
- mountd #服务端提供(showmount)共享端口在那里
- nfs #服务端提供(showmount)共享端口能不能访问,限制共享端口被谁访问,能不能访问
三、搭建实验环境
1、重置虚拟机server和desktop,保持实验环境纯净
2、在真机中挂载与虚拟机版本相同的镜像7.0
3、设置虚拟机server网络
server做服务端
ip为172.25.254.176
4、修改yum源地址
真机76上挂载了7.0版本的镜像,可供使用
5、desktop做客户端
设置shell框颜色,用于区分客户端与服务端
6、设置虚拟机desktop网络
ip为172.25.254.20
7、配置desktop虚拟机yum源
四、nfs文件系统服务端与客户端的部署
服务端:
【1】
yum search nfs #寻找nfs安装包
yum install nfs-utils -y #下载文件系统共享软件
systemctl start nfs-server #开启nfs文件共享服务
systemctl enable nfs-server #开机自启动
【2】
firewall-cmd --permanent --add-service=nfs #限制端口访问
firewall-cmd --permanent --add-service=rpc-bind #服务端给客户端提供有没有端口
firewall-cmd --permanent --add-service=mountd #服务端给客户端提供共享端口位置
firewall-cmd --reload
firewall-cmd --list-all
【3】
mkdir /yan_nfs
vim /etc/exports #共享存在的目录
/yan_nfs *(sync) #用sync这种方式将目录共享给所有人
exportfs -rv #刷新
注:
sync 硬访问,连接不到则不断访问
anyc 尝试三次,连接不到就自动断开
【4】
systemctl restart nfs #重启nfs服务
客户端:
【1】
showmount -e 172.25.254.176 #查看176共享端口能否使用
【2】
yum install autofs -y #客户端下载nfs文件系统连接服务
systemctl start autofs.service
【3】
cd /net/172.25.254.176 #/net为autofs默认生成的目录,里边有所有查看过nfs共享系统的主机
ls
cd yan_nfs
ls
#数据同步性较强,不需要刷新
【4】
df #此时已自动挂载上
cd #退出
df #默认300s后自动卸载
vim /etc/sysconfig/autofs
原因:默认退出后持续挂载时间300s
【5】
vim /etc/sysconfig/autofs
timeout=3 #修改退出自动卸载时间
systemctl restart autofs.service
df #3秒后自动卸载
2、修改挂载点
客户端:
主策略文件 /etc/auto.master
【1】
vim /etc/auto.master
14 /mnt /etc/auto.nfs
systemctl restart autofs
注:
/mnt #最终挂载点的上层目录
/etc/auto.nfs #子策略文件,挂载方式。自己建立
【2】
vim /etc/auto.nfs
text 172.25.254.119:/yan_nfs
systemctl restart autofs
注:
text #最终挂载点
172.25.254.119:/yan_nfs #挂载点上挂载的设备
测试:
cd /mnt/text
df #此时设备已挂载到/mnt/text
mount
rw,vers=4 #读写挂载,挂载版本nfs4.0
2、修改挂载参数
(1)sync数据写完后以只读rw方式传给客户端
【1】
vim /etc/auto.master
14 /mnt /etc/auto.nfs
systemctl restart autofs
【2】
vim /etc/auto.nfs
text -ro,vers=3 172.25.254.119:/yan_nfs
systemctl restart autofs
注:-ro,vers=3 #挂载参数,只读挂载,版本3.0
测试:
cd /mnt/nfs
mount
ro,vers=3 #nfs3.0版本
2、修改共享参数
服务端:
【1】
vim /etc/exports
/nfs_ll *(rw,sync) #读写共享
【2】
mkdir /nfs_ll
ls -ld /nfs_ll
drwxr-xr-x root root
#读写共享 ,只对服务端超级用户可写,客户端不可写
exportfs -rv
客户端:
【1】
showmount -e 172.25.254.176
【2】
vim /etc/auto.master
15 /mnt/ll /etc/auto.ll
vim /etc/auto.ll
nfs 172.25.254.119:/nfs_ll
systemctl restart autofs
【3】
cd /mnt/ll/nfs #进入挂载目录
df
mount #读写方式挂载
touch file #错误,文件系统不允许,客户端超级用户不可写
2、修改挂载参数,使客户端可写
vim /etc/exports
/yan_nfs *(sync) 172.25.254.20(rw,anonuid=1001,anongid=1001,no_root_squash)
注:
async | 实时同步 |
sync | 完成服务后共享 |
ro | 只读挂载 |
rw | 读写挂载 |
anonuid | 转换超级用户身份为指定的westos |
anongid | 转换超级用户组为指定的westos |
no_root_squash | 客户端超级用户挂载时不做身份转换,沿用客户器端的超级用户(包括客户端普通用户沿用自己身份,在服务端查看时显示的是与客户端用户建立文件时使用的用户相同id对应的用户) |
all-squash | 客户端所有用户建立文件均使用服务端设置的用户 |
注:不写身份转换条件客户建立文件默认建立的文件所有人所有组属于服务端设置用户
【1】
服务端:
vim /etc/exports
/yan_nfs *(sync) 172.25.254.20(rw)
exportfs -rv
chmod 777 /yan_nfs
客户端:
vim /etc/auto.nfs
text -rw,ver=3 172.25.254.176:/yan_nfs
systemctl restart autofs
cd /mnt/text
touch testfile1 #新建文件
ll testfile1 #查看文件属性
nfsnobody nfsnobody
【2】
服务端:
id westos
vim /etc/exports
/yan_nfs *(sync) 172.25.254.20(rw,anonuid=1001,anongid=1001) #20主机用户登陆时可读写并且转换身份为id为服务器端1001的用户
exportfs -rv #刷新
客户端:
cd /mnt/ll
touch textfile2
ll textfile2
1001 1001
服务端:
cd /yan_nfs
ll
【3】
服务端:
vim /etc/exports
/westos_nfs *(sync) 172.25.254.219(rw,anonuid=1001,anongid=1001,no_root_squash)#客户端超级用户挂载时不做身份转换,沿用客户器端的超级用户(包括客户端普通用户沿用自己身份,在服务端查看时显示的是与客户端用户建立文件时使用的用户相同id对应的用户)|
exportfs -rv
客户端:
cd /mnt/westos
touch textfile3
ll textfile3
root root
su - student
cd /etc/text
touch textfile4
ll
#客户端普通用户不能挂载设备,使用nfs挂载时默认成为超级用户,所建立文件属于服务端student
服务端:
【4】
服务端:
vim /etc/exports #修改挂载策略
/westos_nfs *(sync) 172.25.254.219(rw,anonuid=1001,anongid=1001,all_squash)#客户端所有用户建立文件均使用服务端设置的用户,与不写all_squash时效果相同
exportfs -rv
客户端:
cd /etc/text
touch textfile6
ll
su - student #切换到student用户
cd /etc/text #进入共享目录
touch textfile6
ll
服务端查看: