NFS特点
nfs像windows的网络共享,samba服务
samba服务主要用于办公室的局域网共享服务
NFS发展有30年,代表了一个稳定的网络文件共享系统
samba服务主要用于办公室的局域网共享服务
NFS30年发展历史,代表了一个稳定的网络文件共享系统,中小型企业最佳的文件共享选择
NFS和RPC
RPC
NFS服务器启动的时候,会随机采用若干个端口,并且主动在RPC服务中进行注册
如此一来RPC服务就正确知道所有NFS服务端的端口功能了,RPC服务默认使用linux的111端口
和NFS客户端进行一个交流,并且通过111端口将正确的NFS服务端的端口信息,告知给NFS客户端
exrpotfs -rv
systemctl reload nfs
安装配置NFS
nfs-utils:nfs服务的主程序,包括了rpc.nfsd rpc.mountd这2个守护进程,相关的配置文件信息
rpcbind:centos7,是一个RPC服务进程
yum install nfs-utils rpcbind -y
环境变量
NFS是c/s模式,client,server,准备一个NFS服务端,准备一个NFS客户端,两台linux机器
在NFSserver端 创建一个用于共享的文件夹,且设置相应的读写权限
[root@localhost ~]# mkdir /nfsjay
[root@localhost ~]# chmod -Rf 777 /nfsjay/
修改NFS服务的配置文件
/etc/exports
nfs语法参数
1.nfs共享目录:是nfs服务器需要共享出去的实际目录,文件夹,必须写绝对路径,且注意目录的读写本地权限
如果你允许客户端读写操作,other有一个读写的权限(user,group,other三个身份)
2.nfs客户端地址,也就是nfs服务器授权可以访问共享目录的地址,可以写主机名,可以写通配符,ip地址
3.权限参数,对NFS授权的客户端,进行权限控制的参数,如下
nfs客户端地址形成
单一客户端 192.168.178.113 用的很少
允许整个网段访问 192.1698.178.0/24,指定局域网网段,用的还是很多的
授权整个域名客户端 nfs.abc.com 用的很少
授权子域名客户端 *.abc.com 用的很少
nfs客户端的权限参数
ro 只读
rw 读写
root_squash 当nfs客户端以root账号访问Nfs服务端共享目录数据的时候,把该root映射为NFS服务端的一个匿名用户
该用户的UID,GID会变成nfsnobody的信息
no_root_squash 几乎和上面一样,root账户会映射为root账户,非常不安全,禁用
all_squash 所有nfs客户端的用户都映射为匿名用户,很安全,生产环境常用
sync 数据同步写入到内存和磁盘,优点是保证内存数据安全,但是效率太低
async 数据先写入到内存,在持久化到磁盘,效率非常高,但是可能会有数据丢失的隐患
启动NFS服务端的文件目录共享
NFS服务都是基于RPC的111通信端口,必须确保先启动了RPC服务
如果RPCBIND服务停止了,111端口也不会挂掉,因为centos7 还提供了一个rpcbind.socket服务运行着
nfs服务端部署
1.保证rpcbind服务正确运行
2.创建nfs服务端共享的目录
mkdir -p /nfsjay
chmod -Rf 777 /nfsjay/ #递归且强制性授权777
3.在nfs共享目录中创建测试的文件
[root@localhost nfsjay]# touch 一路向北.txt
[root@localhost nfsjay]# chown -R nfsnobody.nfsnobody /nfsjay/ #修改属主属组
修改NFS服务的配置文件,进行客户端授权
[root@localhost opt]# cat /var/lib/nfs/etab
/nfsjay *(rw,sync,wdelay,hide,nocrossmnt,insecure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,insecure,root_squash,no_all_squash)
8.此时可以把nfs服务端本地,当做一个客户端,模拟挂载访问试试
[root@localhost opt]# mount -t nfs 127.0.0.1:/nfsjay /mnt
[root@localhost opt]# mount -l|grep mnt #查看挂载情况
[root@localhost /]# cd /mnt/
[root@localhost mnt]# ls
mnt到此一游.txt 一路向北.txt 夜曲.txt
9.如果不用nfs目录共享了,可以直接取消挂载
[root@localhost /]# umount /mnt/
nfs客户端远程挂载的使用
1准备一个新的linux客户端机器,并且安装nfs相关的软件.
yum install nfs-utils rpcbind -y
2.确保rpcbind服务正常
systemctl status rpcbind
3.可以远程的检查,nfs的共享情况
showmount -e 160.116.208.83
Export list for 160.116.208.83:
/nfsjay *
4.进行以nfs协议的挂载使用
mkdir -p /jay888
[root@160-116-208-21 ~]# mount -t nfs 160.116.208.83:/nfsjay /jay888
5.检查nfs客户端本地的挂载情况
# mount -l | tail -1 #tail -1 显示最后一行
160.116.208.83:/nfsjay on /jay888 type nfs4 (rw,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=160.116.208.21,local_lock=none,addr=160.116.208.83)
6.进入本地挂载的目录,尝试访问远程的NFS服务端的数据
7.卸载目录挂载
umount /jay888
如果挂载都失败,检查服务端的配置,以及防火墙是否打开
nfs自动挂载服务
配置开机挂载服务,每次开机都能用nfs
1.把挂载命令写入到开机自动挂载文件中
/etc/fstab 文件
160.116.208.83:/nfsjay /jay888 nfs defaults 0 0
autofs自动挂载服务
如果开机就强制挂载很多内容,但是又不经常使用,会给服务器造成很大的压力
因此一些具有动态特性的文件系统,可以选择进行动态挂载
autofs特点
autofs和mount命令的不同点在于
autofs是一个守护进程,他会在后台检测用户是否要访问某一个还未挂载的文件系统,autofs会自动检测该文件
系统是否存在,如果存在则进行挂载,如果用户过了一段时间没有使用该文件系统,autofs自动将其卸载,节省
人力维护的成本,以及节省服务器资源
缺点:
autofs,当用户请求时候才挂载 文件系统,高并发的业务场景,大量用户并发访问文件系统,
autofs突然进行大量挂载,会给服务器造成很大的压力,因此高并发场景下,宁愿保持持续挂载
也不用autofs
安装autofs
yum install autofs -y
修改autofs配置文件
/etc/auto.master
1.打开autofs配置文件,找到第七行,添加代码
/misc /etc/auto.misc
/- /etc/auto.home #添加这里的配置参数
修改自定义的自动挂载配置文件
[root@160-116-208-21 ~]# vim /etc/auto.home
[root@160-116-208-21 ~]# cat /etc/auto.home
/jay888 -rw,soft,intr 160.116.208.83:/nfsjay
启动autofs
systemctl start autofs
只要autofs检测到用户,对挂载点,进行读写,比如 ls cd的操作,aotofs就会自动的进行挂载
当一段时间不操作之后,会自动卸载该设备
检查本地文件系统情况