备份文档——nfs存储服务
2020-02-12 本文已影响0人
如歌丨如歌
熟悉nfs服务
通过挂载的方式,实现相同集群之间的数据保持一致
服务端: nfs存储服务器
1..安装软件
nfs-utils rpcbind
2..安装部署
服务端部署:
第一步: 安装存储软件 nfs-utils rpcbind
第二步: 编写配置文件
第三步: 创建存储目录,修改属主属组
第四步: 启动1 rpc 启动2 nfs --注意开机自启:systemctl enable ...
客户端部署:
第一步: 安装nfs-utils软件
第二步: 实现网络存储服务挂载
mount -t nfs 172.16.1.31:/data 挂载点目录
第三步: 验证服务搭建情况
3..具体步骤
服务端部署:
第一步: 下载安装软件
[root@nfs01 ~]# rpm -qa | grep -E "nfs|rpc"
[root@nfs01 ~]# yum install -y nfs-utils rpcbind
第二步: 编写配置文件
[root@nfs01 ~]# ll /etc/exports
[root@nfs01 ~]# man exports
vim /etc/exports
01 02(03)
格式说明:
01: 设置数据存储的目录 /data
02: 设置网络的白名单 允许哪些主机连接到存储服务器进行数据存储
03: 配置存储目录的权限信息 配置存储目录的一些功能
参考配置:
[root@nfs01 data]# vim /etc/exports
/data/web 172.16.1.0/24(rw,sync,no_all_squash,anonuid=1200,anongid=1200)
#web服务器的挂在目录属主为www,注意用户的UID和GID要相同
PS: 普通用户进行转换,以便方便管理文件系统
root用户转换成对应的文件系统的文件夹的属主,以便管理
注意: 客户端和服务端的用户UID和GID要相同
第三步: 创建存储目录 mkdir -p /data /web
useradd -u 1200 www
需要权限修改--属主属组: chown www /data/web
PS: 安装自带用户
[root@nfs01 /]# cat /etc/passwd | grep nfsnobody
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
第四步: 启动服务程序
先启动rpc服务
systemctl start rpcbind.service
systemctl enable rpcbind.service
客户端部署:
mkdir -p /data
useradd -u 1200 www
yum install -y nfs-utils
mount -t nfs 172.16.1.31:/data/web /data
进行开机挂在(练习不进行开机挂在,要是没开启nfs服务器,会对web服务器有影响)
(1) 172.16.1.31:/data /mnt nfs defaults 0 0 --- /etc/fstab
(2) 利用rc.local (文件要有执行权限) --- /etc/rc.local
4..常见问题以及注意事项
(1) 先启动rpc.bind服务后才能启动nfs服务
(2) 企业案例:秒杀服务?
企业互联网公司如何配置nfs 各种squash
no_all_squash 需要进行配置 共享目录权限为www 普通用户--nfsnobody
但是!即使设置成all_squash,然后把目录权限改成www,普通用户用户也无法修改数据!
root_squash 需要进行配置 共享目录权限为www root用户--nfsnobody
root用户一样要进行这样配置!!
以上默认配置(很多服务默认配置都从安全角度出发)
[root@nfs01 ~]# cat /var/lib/nfs/etab
/data 172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,no_all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,no_all_squash)
记录nfs的默认配置信息.
如何让root用户可以操作www管理的data目录?
anonuid=65534,anongid=65534====nfsnobody的UID和GID--->指定映射成什么用户
企业中如何编写nfs配置文件
01..通用方法
/data 172.16.1./24(rw,sync)
02..特殊情况--让部分人员不能操作存储目录,但是能看
/data 10.0.0.0/24(ro,sync)
03..修改默认的匿名用户
/data 10.0.0.0/24(rw,sync,anonuid=xxx,anongid=xxx)
nfs客户端(oldboy) nfs服务端(data目录-数据信息)
NFS服务挂在不上排查方法:
服务端进行排查:
1. 检查nfs进程信息是否注册
rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2. 检查有没有可用的存储目录
3. 在服务端进行挂载测试
是否能在存储目录中创建或删除数据
客户端测试:
1. 检查nfs进程信息是否注册
rpcinfo -p localhost/172.16.1.31
问题原因:
服务启动顺序不对,没有启动nfs服务
2. 检查有没有可用的存储目录
showmount -e 172.16.1.31
问题原因:
配置文件编写有问题,重启服务
网络问题
ping 172.16.1.31
telnet 172.16.1.31 111
5..其他详细配置说明详见day30 31 32
数据时时备份,与备份服务器还是有区别的
配置实时同步服务:
1) 部署好rsync守护进程
服务端配置操作
2) 部署inotify监控服务
第一步: 安装inotify软件
yum install -y inotify-tools
第二步: 熟悉命令的使用
[root@nfs01 data]# rpm -ql inotify-tools
/usr/bin/inotifywait ---实现监控目录信息变化
/usr/bin/inotifywatch ---对监控的变化信息进行统计
统计变化:
/data oldboy01.txt 修改 修改一次
oldboy02.txt 删除 删除两次
oldboy03.txt 删除
inotifywait [参数信息] 监控的目录
参数:
-m|--monitor Keep listening for events forever. Without
this option, inotifywait will exit after one ---一直监控目录变化
event is received.
-r|--recursive Watch directories recursively(递归). ---进行递归监控
-q|--quiet Print less (only print events). 与tar/rsync的-v相反 ---显示简略信息
--format <fmt> Print using a specified printf-like format ---指定输出信息的格式
string; read the man page for more details.
--timefmt <fmt> strftime-compatible format string for use with ---指定输出的时间信息格式
%T in --format string.
-e|--event <event1> [ -e|--event <event2> ... ] ---指定监控的事件信息?监控创建,不管删除
创建文件监控信息输出:
[root@nfs01 ~]# inotifywait -m /data
Setting up watches.
Watches established.
/data/ CREATE test01.txt ---- 一个文件被创建出来
/data/ OPEN test01.txt ---- 打开创建的文件
/data/ ATTRIB test01.txt ---- 修改文件的属性信息
/data/ CLOSE_WRITE,CLOSE test01.txt ---- 保存关闭一个文件
删除文件监控信息输出:
/data/ DELETE test.txt
需改文件监控信息输出:
修改没有的文件:
/data/ CREATE test02.txt
/data/ OPEN test02.txt
/data/ MODIFY test02.txt
/data/ CLOSE_WRITE,CLOSE test02.txt
修改已有的文件:
/data/ MODIFY test01.txt
/data/ OPEN test01.txt
/data/ MODIFY test01.txt
/data/ CLOSE_WRITE,CLOSE test01.txt
sed命令修改文件原理:
/data/ OPEN test01.txt --- 打开文件
/data/ CREATE sedCnSonD --- 创建一个临时文件-->内存中(模式空间)
/data/ OPEN sedCnSonD --- 打开临时文件
/data/ ACCESS test01.txt --- 读取源文件内容
/data/ MODIFY sedCnSonD --- 修改临时文件
/data/ ATTRIB sedCnSonD --- 临时文件属性变化
/data/ CLOSE_NOWRITE,CLOSE test01.txt --- 不编辑,直接关闭源文件
/data/ CLOSE_WRITE,CLOSE sedCnSonD --- 写入关闭临时文件
/data/ MOVED_FROM sedCnSonD --- 将临时文件移除
/data/ MOVED_TO test01.txt --- 移入一个新的user10源文件
inotify监控命令格式:
inotifywait -mrq --timefmt "%F_%T" --format "%T %w %f 事件信息:%e" /data -e CREATE***
2019-11-20_15:00:47 /data/data01/ 06.txt 事件信息:CREATE
需要监控的事件信息:CREATE delete move_to close_write
企业应用: 防止系统重要文件被破坏
需要inotify进行实时一直监控 /etc/passwd /var/spool/cron/root
3) 部署sersync同步服务
第一步: 下载sersync
在GitHub上下载软件通过rz命令上传至Linux服务器
PS: 软件统一保存在/server/tools目录中
第二步: 解压安装软件,将解压后的数据进行保存
将文件移动到/usr/local/目录中
第三步: 编写配置文件
vim confxml.xml
配置文件详细解释
6 <filter start="false">
7 <exclude expression="(.*)\.svn"></exclude>
8 <exclude expression="(.*)\.gz"></exclude>
9 <exclude expression="^info/*"></exclude>
10 <exclude expression="^static/*"></exclude>
11 </filter>
说明:排除指定数据信息不要进行实时传输同步
12 <inotify>
13 <delete start="true"/>
14 <createFolder start="true"/>
15 <createFile start="false"/>
16 <closeWrite start="true"/>
17 <moveFrom start="true"/>
18 <moveTo start="true"/>
19 <attrib start="false"/>
20 <modify start="false"/>
21 </inotify>
说明:定义inotify程序需要监控的事件
24 <localpath watch="/data">
#监控目录
25 <remote ip="172.16.1.31" name="web"/>
#监控主机地址 模块
26 <!--<remote ip="192.168.8.39" name="tongbu"/>-->
27 <!--<remote ip="192.168.8.40" name="tongbu"/>-->
28 </localpath>
29 <rsync>
30 <commonParams params="-artuz"/>
#rsync传输参数
31 <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
#rsync配置
32 <userDefinedPort start="true" port="873"/><!-- port=873 -->
#rsync端口设置
启动运行: /server/tools/sersync/sersync2 -dro /server/tools/sersync/confxml.xml (使用绝对路径)
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sersync/"
也可加入到PATH路径中,直接使用:
sersync2 -dro /server/tools/sersync/confxml.xml