day27-Rsync和NFS服务

01.Rsync 案例
可重复使用。
1.客户端提前准备存放的备份的目录,目录规则如下:
/backup/nfs_172.16.1.31_2018-09-02
需求: 定时任务配置文件 /etc/passwd
目录创建方式:
[root@web01:~]#mkdir -p /backup/`hostname`_`hostname
-I|awk '{print $1}'`_`date +%F`
[root@web01:~]#ll /backup/
total 0
drwxr-xr-x 2 root root 6 Jul 31 11:37 web01_10.0.0.7_2024-07-31


2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02
[root@web01:~]#code_dir=/backup/`hostname`_`hostname
-I|awk '{print $1}'`_`date +%F`
[root@web01:~]#echo $code_dir
/backup/web01_10.0.0.7_2024-07-31
[root@web01:~]#tar zcf $code_dir/etc.tar.gz /etc
tar: Removing leading `/' from member names
[root@web01:~]#ll $code_dir/
total 5220
-rw-r--r-- 1 root root 5342620 Jul 31 11:38 etc.tar.gz
[root@web01:~]#ll /backup/web01_10.0.0.7_2024-07-31/
total 5220
-rw-r--r-- 1 root root 5342620 Jul 31 11:38 etc.tar.gz



3.客户端最后将备份的数据进行推送至备份服务器
rsync -avz $code_dir rsync_backup@172.16.1.41::backup
4.客户端每天凌晨1点定时执行该脚本
00 01 * * * root  sh xxx.sh   # 测试每分钟执行一次

5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间 写入脚本
模拟7天前的时间 date -s
find /backup/* -mtime +7|xargs rm -rf




[root@web01:~]#mkdir -p /server/scripts
[root@web01:~]#cd /server/scripts
[root@web01:scripts]#cat backup.sh
#设置变量
ba_dir=/backup/`hostname`_`hostname -I|awk '{print $2}'`_`date +%F`

#1.创建目录
mkdir -p $ba_dir

#2.打包重要的文件放到创建好的目录
tar zcf $ba_dir/etc.tar.gz /etc/hosts /etc/passwd &>/dev/null

#3.将打包的文件传送到backup服务端
export RSYNC_PASSWORD=123456
rsync -avz $ba_dir rsync_backup@172.16.1.41::backup

#4.查找修改时间大于7天前的文件然后删除
find /backup/* -mtime +7|xargs rm -rf

cat /etc/crontab
00 00 * * * root sh /server/scripts/backup.sh &>/dev/null

02.NFS 服务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过程了解:
1.用户进程访问NFS客户端,使用不同的函数对数据进行处理
2.NFS客户端通过TCP/IP的方式传递给NFS服务端。
3.NFS服务端接收到请求后,会先调用portmap进程进行端口映射。
4.nfsd进程用于判断NFS客户端是否拥有权限连接NFS服务端。
5.Rpc.mount进程判断客户端是否有对应的权限进行验证。
6.idmap进程实现用户映射和压缩
7.最后NFS服务端会将对应请求的函数转换为本地能识别的命令,传递至内核,由内核驱动硬件。*
注意: rpc是一个远程过程调用,那么使用nfs必须有rpc服务
作用: 实现数据一致性
NFS服务器: 10.0.0.31  172.16.1.31
1.安装NFS服务
[root@nfs:~]#yum -y install nfs-utils

2.配置NFS服务
配置文件: /etc/exports 默认为空文件
[root@nfs:~]#vim /etc/exports
[root@nfs:~]#cat /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash)

注释信息:
/data           #共享的目录
172.16.1.0/24   # 允许哪个网段可以挂载我
rw				# 挂载的参数 可读写
sync			# 同步到内核和磁盘
all_squash      # 将所有的用户压缩成虚拟用户



3.根据配置创建数据信息
[root@nfs:~]#mkdir /data
[root@nfs:~]#ll -d /data
drwxr-xr-x 2 root root 6 Aug  1 10:05 /data
属主属组修改为匿名用户
[root@nfs:~]#chown nobody.nobody /data/
[root@nfs:~]#ll -d /data/
drwxr-xr-x 2 nobody nobody 6 Aug  1 10:05 /data/


4.启动NFS服务
[root@nfs:~]#systemctl start nfs
[root@nfs:~]#systemctl enable nfs


查看配置文件是否正确,和默认的参数
[root@nfs:~]#ll -d /data
drwxr-xr-x 2 root root 6 Aug  1 10:05 /data
[root@nfs:~]#cat /var/lib/nfs/etab
/data	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,rw,secure,root_squash,all_squash)
[root@nfs:~]#grep 65534 /etc/passwd
nobody:x:65534:65534:Kernel Overflow User:/:/sbin/nologin
属主属组修改为匿名用户
[root@nfs:~]#chown nobody.nobody /data/




5.测试NFS服务
web01测试:
因为需要依赖rpcbind协议,所以客户端都需要安装nfs-utils,里面包含了rpcbind协议
第一步: 客户端只安装,不配置,不启动服务。
[root@web01:~]#yum -y install nfs-utils

第二步: 查看服务端共享的目录
[root@web01:~]#showmount -e 172.16.1.31
Export list for 172.16.1.31:
/data 172.16.1.0/24

第三步: 挂载使用
[root@web01:~]#mkdir /code
[root@web01:~]#mount -t nfs 172.16.1.31:/data /code
[root@web01:~]#df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               459M     0  459M   0% /dev
tmpfs                  475M     0  475M   0% /dev/shm
tmpfs                  475M   43M  432M   9% /run
tmpfs                  475M     0  475M   0% /sys/fs/cgroup
/dev/mapper/klas-root   47G  3.8G   44G   8% /
tmpfs                  475M     0  475M   0% /tmp
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                   95M     0   95M   0% /run/user/0
172.16.1.31:/data       47G  3.8G   44G   8% /code

第四步: 测试否可以写入内容
[root@web01:~]#cd /code/
[root@web01:code]#ll
total 0
[root@web01:code]#touch a.txt
[root@web01:code]#ll
total 0
-rw-r--r-- 1 nobody nobody 0 Aug  1 10:21 a.txt

第五步: 写入开机自动挂载 建议写到/etc/rc.local
/etc/rc.local 是最后才执行的
[root@web01:code]#tail -1 /etc/fstab
172.16.1.31:/data 	/code			nfs     defaults 0 0

测试fstab配置
[root@web01:~]#mount -a
[root@web01:~]#df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               459M     0  459M   0% /dev
tmpfs                  475M     0  475M   0% /dev/shm
tmpfs                  475M   43M  432M   9% /run
tmpfs                  475M     0  475M   0% /sys/fs/cgroup
/dev/mapper/klas-root   47G  3.8G   44G   8% /
tmpfs                  475M     0  475M   0% /tmp
/dev/sda1             1014M  169M  846M  17% /boot
tmpfs                   95M     0   95M   0% /run/user/0
172.16.1.31:/data       47G  3.8G   44G   8% /code
03.挂载夯住
1.挂载到NFS
2.将NFS的内网卡关闭
3.df -h夯住

解决方法:
1.启动NFS网卡
2.强制卸载
[root@web01:~]#umount -f /code
3.如果不知道挂载点,查看/proc/mounts信息
[root@web01:~]#cat /proc/mounts
...
...
172.16.1.31:/data /code nfs4 rw,relatime,vers=4.2,rsize=131072,wsize=131072,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.16.1.7,local_lock=none,addr=172.16.1.31 0 0
然后卸载:
[root@web01:~]#umount -f /code

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

04.NFS 参数
1.rw                       # 表示读写
2.ro                       # 表示只读 只能看
3.all_squash               # 所有用户进行压缩成匿名用户
4.anonuid=666,anongid=666  # 指定匿名用户uid为666
5.sync			 	       # 同步写入磁盘和内存


测试ro和rw参数
[root@nfs:~]#cat /etc/exports
/data/baidu 172.16.1.0/24(rw,sync,all_squash)
/data/oldboy 172.16.1.0/24(ro,sync,all_squash)

重启生效
[root@nfs:~]#systemctl restart nfs

[root@nfs:~]#mkdir /data/{baidu,oldboy}
[root@nfs:~]#ll /data/
total 0
-rw-r--r-- 1 nobody nobody 0 Aug  1 10:21 a.txt
drwxr-xr-x 2 root   root   6 Aug  1 10:48 baidu
drwxr-xr-x 2 root   root   6 Aug  1 10:48 oldboy
[root@nfs:~]#chown -R nobody.nobody /data/
[root@nfs:~]#ll /data/
total 0
-rw-r--r-- 1 nobody nobody 0 Aug  1 10:21 a.txt
drwxr-xr-x 2 nobody nobody 6 Aug  1 10:48 baidu
drwxr-xr-x 2 nobody nobody 6 Aug  1 10:48 oldboy




客户端挂载:
[root@web01:~]#mkdir /code/{oldboy,baidu}
[root@web01:~]#ll /code/
total 0
drwxr-xr-x 2 root root 6 Aug  1 10:50 baidu
drwxr-xr-x 2 root root 6 Aug  1 10:50 oldboy

[root@web01:~]#mount -t nfs 172.16.1.31:/data/oldboy /code/oldboy
[root@web01:~]#mount -t nfs 172.16.1.31:/data/baidu /code/baidu

[root@web01:~]#df -h
Filesystem                Size  Used Avail Use% Mounted on
devtmpfs                  459M     0  459M   0% /dev
tmpfs                     475M     0  475M   0% /dev/shm
tmpfs                     475M   43M  432M   9% /run
tmpfs                     475M     0  475M   0% /sys/fs/cgroup
/dev/mapper/klas-root      47G  3.8G   44G   8% /
tmpfs                     475M     0  475M   0% /tmp
/dev/sda1                1014M  169M  846M  17% /boot
tmpfs                      95M     0   95M   0% /run/user/0
172.16.1.31:/data/oldboy   47G  3.8G   44G   8% /code/oldboy
172.16.1.31:/data/baidu    47G  3.8G   44G   8% /code/baidu
[root@web01:~]#touch /code/oldboy/oldboy.txt
touch: cannot touch '/code/oldboy/oldboy.txt': Read-only file system
[root@web01:~]#touch /code/baidu/baidu.txt



指定虚拟用户:
[root@nfs:~]#cat /etc/exports
/data/baidu 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
/data/oldboy 172.16.1.0/24(ro,sync,all_squash)

重启生效
[root@nfs:~]#systemctl restart nfs

检查配置结果:
[root@nfs:~]#cat /var/lib/nfs/etab
/data/oldboy	172.16.1.0/24(ro,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=65534,anongid=65534,sec=sys,ro,secure,root_squash,all_squash)
/data/baidu	172.16.1.0/24(rw,sync,wdelay,hide,nocrossmnt,secure,root_squash,all_squash,no_subtree_check,secure_locks,acl,no_pnfs,anonuid=666,anongid=666,sec=sys,rw,secure,root_squash,all_squash)

[root@nfs:~]#grep 666 /etc/passwd
[root@nfs:~]#groupadd -g666 www
[root@nfs:~]#useradd -u666 -g666 -M -s /sbin/nologin www

/data/baidu授权属主属组为www
[root@nfs:~]#chown www.www /data/baidu
[root@nfs:~]#ll /data/baidu
total 0
-rw-r--r-- 1 nobody nobody 0 Aug  1 10:52 baidu.txt
[root@nfs:~]#ll -d /data/baidu
drwxr-xr-x 2 www www 23 Aug  1 10:52 /data/baidu



NFS完整配置:
[root@nfs:~]#cat /etc/exports
/data/baidu 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

05.NFS 案例

*准备 3 台虚拟机服务器,并且请按照要求搭建配置 NFS 服务。
NFS 服务端(A)10.0.0.31 172.16.1.31
NFS 客户端(B)10.0.0.7
NFS 客户端(C)10.0.0.41 1.在 NFS 服务端(A)上共享/data/w(可写)及/data/r(只读) 2.在 NFS 客户端(B/C)上进行挂载

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值