企业级NFS网络文件共享服务
数据的分类:按产生变化的难易程度分为动态数据和静态数据
动态数据:容易产生变化的数据,文字等,存放在数据库
静态数据:不容易产生变化的数据,视频,图片,音频等,存放在存储
NFS:Netwok File System 网络文件共享系统
集群(也叫群集):是指机台计算机通过协作共同完成某一项用户请求,实现1+1>2的功能,
问:1、nfs是什么? 网络文件共享系统,可同步静态数据
2、为什么要进行nfs共享?不共享到网络服务器,放在网站本地服务器行吗?
不行。因为同步过程中负载均衡会把用户数据平均分配到各个网络服务器上(分为动态数据库mysql和静态数据库nfs),如同步到网站本地服务器,那各个服务器间用户数据不同步,则导致用户无法正常使用。要实现用户数据实时同步,必须将静态数据上传到网络服务器的存储服务器,再将存储服务器挂载到各个网页服务器,这样用户请求通过负载均衡器传到任意服务器,数据都是同步的。
当用户发出请求,请求首先到企业的网关防火墙,网关防火墙判断没问题之后通过,将请求转发到负载服务器上;负载均衡服务器根据当前服务器的运行情况合理的将用户请求调度反向代理服务器上,通过反向代理服务器向代理服务器向后端服务器发送请求,获取用户请求的数据,并将数据反馈给用户。
就要通过这个网络文件共享服务NFS
端口:每个服务都有物理端口(USB算口、网线端口)和逻辑端口:xshell走的是ssh服务,ssh服务默认监听的是22号端口,xshell只能用22号端口去连接服务器。
NFS工作原理(要求会背):NFS服务它是一种共享服务,会有多台服务器去共同连接这个NFS服务,每个连接都要占用一个端口,而每个端口又不能一样,那么其他服务是如何找到我们nfs这个服务的?是通过rpcbind服务,rpcbind服务固定是111端口,当nfs启动之后,会主动向rpcbind服务注册,将自己可连接的端口告知rpcbind,当共享电脑连接nfs服务的时候直接找到111端口的rpcbind,rpcbind将共享请求分配到nfsnfs开放的共享端口上。
客户端挂载nfs后,df -h查到挂载源包含一个ip,这个ip意义是执行网络tcp协议
注意: ①因nfs启动后要向rpcbind注册,告知自己开放的端口,所以在启动nfs之前必须先启动rpcbin
②启动两台服务器后,首先要要关闭防火墙,关闭selinux,并确保做好yum仓库
当你启动一个服务的时候查看一个服务是否成功:成功标志是端口存活,或者进程在
查看端口:netstat -antup |grep 111
查看进程:ps aux |grep "rpc" (" "可不写)
查看某一个服务是否安装成功:语法:rpm -qa | grep 服务名
查看这个命令出自哪个安装包(如服务器没有某个命令需要查找并安装时)
语法1:rpm -qf 命令的绝对路径
语法2:yum provides *bin/命令名称 因为有些服务的服务名和安装包名不一致
操作流程:
#1、安装服务:rpm -qa | grep 服务名 查询是否已安装,没安装自己安装。
服务端:yum -y install nfs-utils rpcbind 安装nfs和rpcbind
#2、启动服务,先启动rpcbind
/etc/init.d/rpcbind start 启动rpcbin服务
rpcinfo -p localhost 查看已注册端口数量
/etc/init.d/nfs start 启动nfs,然后再/etc/init.d/nfs start发现注册端口数增加了好多,证明nfs已向rpcbin注册了信息,且rpcbind已通过
#3、创建/修改配置文件(data共享目录,IP表示网段,rw表示读写权限,sync表示实时共享)
vim /etc/exports 创建配置文件,并进行编辑:
/data 192.168.71.131/24(rw,sync) 保存退出
(注意:①/data 表示的是在根下共享的目录是data
②10.4.7.0/24 指定可以共享的网段;
③rw 表示用户具有读写权限
④sync:表示数据是实时共享的)
chkconfig rpcbind on 将rpcbind加到开机自启动
chkconfig nfs on 将nfs加到开机自启动
/etc/init.d/nfs restart 重启nfs
#4、查看是否配置成功:
showmount -e 192.168.71.132 输入对方客户端ip可看到共享目录,和网段地址
mkdir data 创建共享目录
验证:测试挂载
mount -t nfs 192.168.71.131:/data /mnt 指定挂载类型为nfs,此ip下的根下的data目录挂载到本地/mnt上
验证能否同步数据:①touch /data/a 在根下的data目录下创建目录a②ls /data显示目录a存在 ③ls /mnt显示目录a存在,即将此ip下同步成功
注意:当共享时,/data是在服务端通过nfs服务在网络上挂载到/mnt的,下一步转到客户端挂载(须先umount /mnt卸载通过网络挂载的nfs ,用df -h查看是否卸载)
#5、客户端挂载:先打开客户端client
yum -y install nfs-utils 仅须安装nfs
showmount -e 192.168.71.132
mkdir test 创建test目录
mount -t nfs 192.168.71.131:/data /root/test
(如报错,可能是二个端口防火墙规则问题,分别执行以下指令即可解决①iptables -L 查看防火墙则②iptables -F清除防火墙则③iptables -L 查看防火墙则)
检验:
1、能否同步数据:①mkdir -p /data/b 在根下的data目录下创建目录b②ls /data显示目录a存在 ③ls /mnt显示目录b存在于同步目录/mnt中,即在同步成功
2、能否在/test下创建目录:touch test/c 在test下创建目录c失败,显示权限不够(因为客户端是通过tcp协议找到服务端的,用nfs的程序用户(除root户,普户以外的程序支持用户)进行读写的,但在服务端ll -d /data 查到/data的属主只有执行权限而没有写权限,所以可chown -R nfsnobody.nfsnobody /data 更改属主和数组为nobody,然后再在客户端touch test/c创建文件c, ls test/发现文件c存在即成功。
#6、配置自动挂载:以
方案一:①vim /etc/rc.local②mount 192.168.71.131:/data /mnt
③reboot④df -h 已挂载④创建一个文件,分别ls /data和ls /mnt都存在即成功
方案二:vim /etc/fstab (很危险,误操作容易导致虚拟机无法开机)
192.168.71.131:/data /mnt nfs defaults 0 0 保存退出
reboot
df -h 查看发现自动挂载成失败:
(原因:fstab在开机启动第四步,但网络服务network是在第八步启动,fstab找不到网络,无法完成挂载,得chkconfig ntfs on,再重启,再reboot查看,)
#7、NFS配置权限设置常用参数说明:在vim /etc/exports编写配置文件时按需调用
①rw Read-write 表示可读写权限
②ro Read-only 表示只读权限
③sync (同步,实时)请求或吸入数据时,数据同步写入到NFS Server的硬盘才返回
④async (异步)写入时数据会先写到内存缓冲区,只到硬盘有空档才会写入磁盘,可以提升写入速率!风险为若服务器挂掉或不正常关机,会损失缓冲区中未写入磁盘的数据
⑤no_root_squash 访问NFS Server共享目录的用户,如是root,它对该共享目录具root权限。
⑥root_squash 如果访问目录的是root,则它的权限将被压缩成匿名用户。
⑦all_squash 不管访问共享目录的用户身份如何,它的权限都被压缩成匿名用户。
⑧anonuid 指定共享文件夹里文件所有者的uid号:
例如:(rw,squash,anonuid=12306,anongid=12306)
⑨anongid 指定共享文件夹里文件所有者的gid号:
例如:(rw,squash,anonuid=12306,anongid=12306)
#7、mount -o参数对应的选项:重点
rw / ro 可以指定文件系统是只读(ro)或可写(rw) ;默认为rw
exec / noexec 是否具有执行文件的权限?如果想要挂载的仅是普通资源数据区
(例如:图片,附件),那么 可以选择noexec ; 默认为exec不给执行权限
(因为病毒就是一些由破坏性得可执行文件,如果文件有执行权限极易中病毒)
#8、mount挂载性能优化参数选项:重点
noatime 禁止修改系统时间(由时间可知谁是最新上传的,防止病毒文件混入)
例:mount -t nfs -o noatime,nodiratime 172.16.1.31:/data /mnt