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 [email protected]::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 [email protected]::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)上进行挂载
文章评论