网络文件系统(NFS)
NFS是Unix系统和网络附加存储文件管理器常用的网络文件系统, 允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。
Cifs挂载samba共享文件,是永久挂载,这样会浪费资源,我们想实现用的时候自动挂载,不用的时候自动卸载,nfs就应运而生了。
exportfs [-aruv]参数说明如下:
-a # 全部挂载(或卸载)/etc/exports文件内的设定。
-r # 重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
-u # 卸载某一目录。
-v # 在export时将共享的目录显示在屏幕上。
NFS共享的常用参数:
ro # 只读访问
rw # 读写访问
sync # 所有数据在请求时写入共享
async # NFS在写入数据前可以相应请求
secure # NFS通过1024以下的安全TCP/IP端口发送
insecure # NFS通过1024以上的端口发送
wdelay # 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay # 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide # 在NFS共享目录中不共享其子目录
no_hide # 共享NFS目录的子目录
subtree_check # 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check # 和上面相对,不检查父目录权限
all_squash # 共享文件的UID和GID映射匿名用户
no_all_squash # 保留共享文件的UID和GID(默认)
root_squash # root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squash # root用户具有根目录的完全管理访问权限
anonuid=xxx # 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx # 指定NFS服务器/etc/passwd文件中匿名用户的GID
实验操作:
在服务端
yum install nfs-utils -y #安装nfs文件系统软件
systemctl start nfs-server #开启服务
mkdir /westos #创建目录
vim /etc/exports #编辑nfs配置文件
/westos *(sync,ro) ---sync表示服务端更改数据后,客户端可以看到 ,/westos表示共享的目录,*表示所有人
exportfs -rv ---重新读取nfs配置文件,立即读取/etc/exports
在客户端
yum install nfs-utils #安装nfs文件系统软件【服务可以不开启】
showmount -e 172.25.254.101 # 识别共享
mount 172.25.254.101:/westos /mnt # 使用共享
连接失败,查看服务端的防火墙。
如果开启防火墙,那么需要添加三个服务,缺一不可。【也可以直接关闭防火墙】
防火墙设置
firewall-cmd --permanent --add-service=nfs #添加允许该服务
firewall-cmd --permanent --add-service=rpc-bind #添加允许进行服务动态端口分配
firewall-cmd --permanent --add-service=mountd #添加允许进行远程挂载
firewall-cmd --reload #重新加载防火墙配置
在客户端测试如下:
挂载访问共享目录
自动挂载autofs服务【客户端实现】
在以上设置完成之后,共享目录被挂载在客户端本地目录中,但是一直是处于挂载状态,不论客户端是否使用该共享目录挂载。此实验实现该共享目录在使用的时候自动挂载在指定的本地目录中,不使用的时候自动卸载。
该功能由服务软件autofs实现,自动挂载器由autofs服务脚本管理,自动挂载器由auto.master配置文件进行配置 /etc/auto.misc
实验操作:
在客户端
yum install autofs.x86_64 -y #安装autofs服务
systemctl start autofs #启动服务
systemctl enable autofs.service #设置服务开机启动
vim /etc/sysconfig/autofs #编辑autofs配置文件 设定空闲等待时间
systemctl restart autofs.service —重启自动挂载服务
autofs服务未开启的时候,/net这个目录不存在
当启动自动挂载服务后,/net目录自动生成
/net/172.25.254.101/westos —当客户端切换到这个地址,服务器共享的目录172.25.254.101/westos 自动在客户端挂载
7.0
7.3
将自动挂载保持时间设置为10秒(系统默认300秒),当不使用挂载设备(不能df或者处于挂载目录中)超过10秒,自动卸载
cd —切换到其他路径
等待10秒
df —查看到无挂载信息,自动卸载
自定义挂载点及挂载参数
自定义挂载点
vim /etc/auto.master
/westos /etc/auto.jing
最终挂载点的上层目录 挂载信息指定的文件
自定义挂载参数
vim /etc/auto.jing
nfshare -ro 172.25.254.101:/westos
最终挂载点 挂载参数(只读挂载) 挂载设备
systemctl restart autofs.service #重启服务使得设置生效
cd /westos/redhat #直接进入指定的挂载点 实现共享目录的指定挂载点挂载
上面两个文件可以实现 把172.25.254.101;/westos 只读挂载 /westos/nfshare 上
共享目录的参数设定
mount可以看到只读挂载,版本是4
1、修改版本
【注意:这里要先cd出,再设置】
2、读写挂载
1)设置客户端读写挂载
vim /etc/auto.jing
nfshare -rw 172.25.254.101:/westos
systemctl restart autofs.service
但是此时还是不能进行写操作
2)设置服务器读写挂载
vim /etc/exports
/westos *(sync,rw)
exportfs -rv
此时客户端还是无法进行写操作,但是报错发生了变化,报错内容看下面的实验操作
chmod 777 /westos #服务端的共享目录对其他用户具有写权限
此时的报错发生了变化—>权限被拒绝。
在服务端对共享目录设置权限
3、对特定的客户端设置共享参数
vim /etc/exports
/westos *(sync,rw) 172.25.254.201(sync,ro) #指定特定的主机进行只读共享
4、指定客户端以root用户的身份创建文件
5、以指定用户的身份以及所属组进行创建文件
实现的效果是客户端挂载之后创建文件的所有人以及所属组均为指定的:
这里设置的uid和gid可以分开设置。
注意
【指定root身份和指定用户身份不可兼得】