nfs共享实时同步
一,开始部署NFS服务器端nfs共享
第一步:NFS软件包安装
yum -y install nfs-utils rpcbind
第二步:创建uid=666,gid=666的用户nfsnobody
[root@nfs01 ~]# useradd -u 666 -s /sbin/nologin -M nfsnobody
[root@nfs01 ~]# id nfsnobody
uid=666(nfsnobody) gid=666(nfsnobody) 组=666(nfsnobody)
第三步:修改/etc/exports配置文件
[root@nfs /]# vim /etc/exports
/data 172.16.1.0/24(rw,sync)
/data/r 172.16.1.0/24(ro,sync,all_squash)
/data/w 172.16.1.0/24(rw,sync,all_squash)
~
~
~
"/etc/exports" 3L, 117C written
第四步:启动NFS相关服务
[root@nfs01 ~]# /etc/init.d/rpcbind start
正在启动 rpcbind: [确定]
[root@nfs01 ~]# /etc/init.d/nfs start
启动 NFS 服务: [确定]
关掉 NFS 配额: [确定]
启动 NFS mountd: [确定]
启动 NFS 守护进程: [确定]
Starting RPC idmapd: [ OK ]
[root@nfs01 ~]#
第五步:设置共享目录/data的属主和属组为指定用户
[root@nfs01 ~]# chown -R nfsnobody.nfsnobody/data
[root@nfs01 ~]# ll -d /data
drwxr-xr-x. 2 nfsnobody nfsnobody 4096 7月 20 11:36 /data
第六步:进行本地挂载测试
[root@nfs01 ~]# mount 172.16.1.31:/data /mnt
[root@nfs01 ~]# ll -d /mnt
drwxr-xr-x. 2 chensiqi chensiqi 4096 7月 20 12:14 /mnt
[root@nfs ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 19706880 1843236 17863644 10% /
devtmpfs 487952 0 487952 0% /dev
tmpfs 498976 0 498976 0% /dev/shm
tmpfs 498976 7884 491092 2% /run
tmpfs 498976 0 498976 0% /sys/fs/cgroup
/dev/sda1 201380 104248 97132 52% /boot
tmpfs 99796 0 99796 0% /run/user/0
172.16.1.31:/data 19706880 1843200 17863680 10% /mnt
第七步:设置rpcbind和nfs服务开机启动
[root@nfs01 ~]# tail -3 /etc/rc.local
#start up nfs service by nfsnobody at 20190708
/etc/init.d/rpcbind start
/etc/init.d/nfs start
[root@nfs01 ~]#
二,开始部署web端NFS客户端共享挂载
配置web01服务器:
第一步:nfs客户端需要安装nfs-utils软件包
yum -y install nfs-utils
第二步:挂载共享目录
[root@web01 ~]# mkdir -p /var/html/www
[root@web01 ~]# mount 172.16.1.31:/data /var/html/www
[root@web01 ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
18003272 4815804 12266280 29% /
tmpfs 502068 0 502068 0% /dev/shm
/dev/sda1 487652 34856 427196 8% /boot
172.16.1.31:/data 18003328 4154240 12928000 25% /mnt
172.16.1.31:/data 18003328 4154240 12928000 25% /var/html/www
第三步:测试写入数据
[root@web01 ~]# cd /var/html/www
[root@web01 www]# ll
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月 9 19:27 csfdsf
-rw-rw-r--. 1 nfsnobody nfsnobody 0 7月 9 00:14 test2
-rw-rw-r--. 1 nfsnobody nfsnobody 4 7月 9 00:14 test.txt
[root@web01 www]# touch 11111
[root@web01 www]# ll
总用量 4
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月 9 19:34 11111
-rw-r--r--. 1 nfsnobody nfsnobody 0 7月 9 19:27 csfdsf
-rw-rw-r--. 1 nfsnobody nfsnobody 07月 9 00:14 test2
-rw-rw-r--. 1 nfsnobody nfsnobody 4 7月 9 00:14 test.txt
第四步:配置开机自动挂载
[root@web01 www]# tail -1 /etc/rc.local
mount -t nfs -o nodev,noexec,nosuid,rw 172.16.1.31:/data /var/html/www
配置web02服务器:配置方式同web01服务器
三,配置Rsync备份服务器
第一步:在配置文件/etc/rsyncd.conf里添加nfsbackup新模块
在配置文件里添加如下内容
[nfsbackup]
# 使用目录
path = /data/
# 有错误时忽略
ignore errors
# 可读可写(true或false)
read only = false
# 阻止远程列表(不让通过远程方式看服务端有啥)
list = false
# 允许IP
hosts allow = 172.16.1.0/24
# 禁止IP
hosts deny = 0.0.0.0/32
# 虚拟用户
auth users = rsync_backup
# 存放用户和密码的文件
secrets file = /etc/rsync.password
第二步:启动rsync服务
方法一:如果没有编写rsync启动脚本
[root@backup ~]# rsync --daemon
[root@backup ~]# ss -antup | grep rsync
tcp LISTEN 0 5 :::873 :::* users:(("rsync",7098,5))
tcp LISTEN 0 5 *:873 *:* users:(("rsync",7098,4))
方法二:如果已经编写了启动脚本
[root@backup ~]# /etc/init.d/rsyncd start
Starting Rsync: [确定]
[root@backup ~]# ss -antup | grep rsync
tcp LISTEN 0 5 :::873 :::* users:(("rsync",7098,5))
tcp LISTEN 0 5 *:873 *:* users:(("rsync",7098,4))
第三步:rsync服务加入开机启动
[root@backup ~]# echo ". /etc/init.d/rsyncd start" >> /etc/rc.local
[root@backup ~]# tail -1 /etc/rc.local
. /etc/init.d/rsyncd start
四,在NFS服务端配置inotify事件监控工具
第一步:安装inotify事件监控工具
此工具需要安装epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[root@nfs01 ~]# yum -y install inotify-tools
第二步:进行rsync + inotify时时推送测试
开两个shell窗口
[root@nfs01 ~]# inotifywait -mrq --format '%w%f' -e delete,close_write,create /data
输入后,shell处于阻塞状态(时时监控)
在另一个窗口的/data目录进行创建,修改,删除测试:
此时我们可以发现当前处于阻塞状态的shell窗口会记录所有目录发生改变的情况
命令说明:
inotifywait:监控命令
-m:持续不断的进行监控(处于阻塞状态)
-r:递归监控,监控目录及目录的所有子目录
-q:只输出简单的监控信息
--format:指定监控数据输出的格式
-e:指定监控的事件类型
delete:删除事件
close_write:文件写入的关闭事件(其实就是监控修改文件)
create:创建事件
第三步:编写inotify + inotify 时时同步推送脚本
#!/bin/bash
Path=/data
backup_Server=172.16.1.41
/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read line
do
if [ -f $line ];then
rsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
else
cd $Path &&\
rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
fi
done
第四步:脚本加入开机(后台)启动
[root@nfs01 ~]# echo "sh /server/scripts/inotify.sh &" >> /etc/rc.local
第五步:进行同步测试
NFS存储服务器:进行如下操作
[root@nfs01 data]# ll
总用量 4
-rw-r--r--. 1 root root 4 7月 9 21:02 aaa
[root@nfs01 data]# touch nfsnobody #创建
[root@nfs01 data]# ll
总用量 4
-rw-r--r--. 1 root root 4 7月 9 21:02 aaa
-rw-r--r--. 1 root root 0 7月 9 21:16 nfsnobody
[root@nfs01 data]# echo 1111 >> nfsnobody #修改
[root@nfs01 data]# ll
总用量 8
-rw-r--r--. 1 root root 4 7月 9 21:02 aaa
-rw-r--r--. 1 root root 5 7月 9 21:17 nfsnobody
[root@nfs01 data]# rm -rf aaa #删除
rsync备份服务器:查看目录同步效果
[root@backup ~]# cd /data
[root@backup data]# ll
总用量 4
-rw-r--r--. 1 rsync rsync 5 7月 9 2019 nfsnobody
[root@backup data]# cat nfsnobody
1111
[root@backup data]#