## 1 备份服务
备份服务概述
目标:主要解决数据不丢,辅助实现高可用;
备份服务:存放已有的备份的,一般与定时任务,脚本搭配使用.
备份服务:rsyncd服务,不同主机之间数据传输.
备份服务器配置:硬盘空间大.
rsyncd特点:
rsync是个服务也是命令(客户端)
使用方便,具有多种模式.
传输数据的时候是增量传输,第1次传输还是全量
全量: 无论多少数据全部推送走(scp)
增量: 只会把修改,新建了的文件传输走(rsync)
Linux下面/etc与/etc/一般来说是没有区别的.
但是在rsync命令中是有区别的
/etc 传输目录下面的内容,包含目录本身.
/etc/ 传输目录下面的内容,不包含目录本身
### 1.1 rsync 企业应用场景
| 应用场景(业务场景) | 应用建议 |
| —————————————— | ———————————————————— |
| rsync 作为命令使用 | 临时拉取,推送数据,跟scp一样,但是rsync只复制增量 |
| 定时备份:rsync服务+定时任务 | 定时备份,定期备份案例(定时任务进行备份+通过rsync传输备份) |
| 实时同步:rsync服务+sersync/lsyncd实现同步 | 解决存储服务单点问题 |
| rsync服务与异地容灾 | 找一个异地的服务器存放备份 |
在rsync对于目录 /etc/ /etc 是有区别的.
/etc /etc目录+目录的内容
/etc/ /etc/目录下面的内容
### 2 本地模式
将本地一个目录或文件复制到另一个目录或文件
### 3 远程模式
上传
下载
第一次是全量,以后都是增量,新增文件,文件内容修改都是增量
### 4 守护进程模式
环境准备:rsyncd sshd daemon
服务使用流程
1、部署
2、配置
3、启动,使用
4、优化
5、故障
6、自动化(备份、监控、日志、安全、自动部署、容器)
| rsync服务端 | rsync客户端 |
| ———————————————————- | —————————————— |
| 部署 | 部署 |
| 修改配置文件/etc/rsyncd.conf | 测试(传输数据) |
| 准备环境(用户,目录,目录权限,服务端密码文件,共享目录) | 创建客户端密码文件并修改权限(仅存放密码) |
| 启动与检查(端口,进程),测试(传输) | 书写脚本(进行备份+传输备份)+定时任务 |
1、检查是否安装
yum install -y rsync
rpm -ql | grep rsync
2、进行配置
“`sh
[root@backup /etc]# cat /etc/rsyncd.conf
fake super = yes #如果不开启,则C7传输报错(伪装成root权限)
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 10.0.0.0/24
##hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
######################################
[data]
comment = www by yangsenlin 14:18 2012-1-13
path = /data
“`
3、后续配置
“`sh
#1.添加虚拟用户
useradd -s /sbin/nologin -M rsync
#2.创建密码文件
密码文件格式: 用户名:密码
echo ‘rsync_backup:123’ >/etc/rsync.password
chmod 600 /etc/rsync.password
此处如果不是600端口会报错
#3.共享目录与权限
mkdir /data/
chown rsync.rsync /data/
“`
4、启动服务
“`sh
#启动服务
systemctl enable rsyncd
systemctl start rsyncd
#检查进程
ps -ef |grep rsync
#检查端口
ss -lntup |grep rsync
rsync使用tcp873端口
“`
\Typora\os-services\image-20250103125445417.png)
\Typora\os-services\image-20250103125504959.png)
5测试1
传输本地文件到data
“`sh
rsync -azv /etc/hostname rsync_backup@192.168.137.41::data
“`
测试2
客户端传输文件到服务端
“`sh
客户端只需要有rsync命令就行
[root@nfs01 /tmp/etc]# rsync -avz /etc/hosts rsync_backup@192.168.137.41::data
Password:
sending incremental file list
hosts
sent 210 bytes received 43 bytes 46.00 bytes/sec
total size is 311 speedup is 1.23
服务端查看
[root@backup /data]# ll
total 8
-rw-r–r– 1 rsync rsync 7 Oct 20 11:39 hostname
-rw-r–r– 1 rsync rsync 311 Oct 13 11:31 hosts
[root@backup /data]#
“`
测试3
客户端免密码传输数据到服务端
“`sh
客户端创建密码文件,并将权限改为600,不然会报错
[root@nfs01 /tmp/etc]# echo ‘XZnh@95599′ >> /etc/rsync.client.mima
[root@nfs01 /tmp/etc]# chmod 600 /etc/rsync.client.mima
[root@nfs01 /tmp/etc]# tar zcf /tmp/etc.tar.gz /etc/
tar: Removing leading `/’ from member names
[root@nfs01 /tmp/etc]# rsync -az /tmp/etc.tar.gz rsync_backup@backup::data –pa
–partial –partial-dir= –password-file=
[root@nfs01 /tmp/etc]# rsync -az /tmp/etc.tar.gz rsync_backup@backup::data –password-file=/etc/rsync.client.mima
[root@nfs01 /tmp/etc]#
服务端
[root@backup /data]# ll
total 5344
-rw-r–r– 1 rsync rsync 5461051 Oct 24 17:14 etc.tar.gz
-rw-r–r– 1 rsync rsync 7 Oct 20 11:39 hostname
-rw-r–r– 1 rsync rsync 311 Oct 13 11:31 hosts
[root@backup /data]#
“`
### 5 rsync选项
| rsync选项 | 含义 |
| ——— | ———————————————————— |
| -a | 所有属性 |
| -v | 显示过程 |
| -z | 传输的时候进行压缩,与限速选项冲突 |
| -P | 显示每rsync -av . root@10.0.0.31:/tmp/ –exclude=04 rsync -av . root@10.0.0.31:/mnt –exclude={04,05}个文件传输过程 (进度条) 断点续传 –partial –progress |
| –bwlimit | 限速,限速,注意不要与-z -P一起使用. iftop查看速度情况iftop -i ens34 -nNP -B |
| –exclude | 排除 |
| –delete | 保持客户端与服务端数据一致,删除服务端多余的数据.(高度保持2者一致,用于实时同步场景,其他场景慎用.) |
#### 5.1 限速并传输
“`sh
[root@nfs01 /tmp/etc]# dd if=/dev/zero of=/2g bs=2M count=1000
1000+0 records in
1000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 4.94094 s, 424 MB/s
[root@nfs01 /tmp/etc]# rsync -aP –bwlimit=500k /2g rsync_backup@192.168.137.41::data –password-file=/etc/rsync.client.mima
sending incremental file list
2g
38,305,792 1% 500.12kB/s 1:08:36
root@nfs01 ~]# iftop -i ens33 -nNP -B
interface: ens33
IP address is: 192.168.137.31
MAC address is: 00:50:56:3c:c1:43
“`
#### 5.2 传输并排除
“`sh
客户端
[root@nfs01 ~]# mkdir yangsenlin
[root@nfs01 ~]# cd yangsenlin/
[root@nfs01 ~/yangsenlin]# ll
total 0
[root@nfs01 ~/yangsenlin]# touch {01..10}.txt
[root@nfs01 ~/yangsenlin]# ll
total 0
-rw-r–r– 1 root root 0 Oct 25 12:44 01.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 02.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 03.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 04.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 05.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 06.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 07.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 08.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 09.txt
-rw-r–r– 1 root root 0 Oct 25 12:44 10.txt
[root@nfs01 ~/yangsenlin]# rsync -a –bwlimit=500k ./* rsync_backup@192.168.137.41::data –password-file=/etc/rsync.client.mima –exclude=04.txt
[root@nfs01 ~/yangsenlin]#
服务端
[root@backup /data]# ll
total 0
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 01.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 02.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 03.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 05.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 06.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 07.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 08.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 09.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 10.txt
“`
#### 5.3 通过文件内容进行排除
“`sh
通过文件内容进行排除
[root@backup /yangsenlin]# cat /tmp/paichu.txt
03
05
10
[root@backup /yangsenlin]# rsync -av . root@10.0.0.31:~ –exclude-from=/tmp/paichu.txt
客户端
[root@nfs01 ~/yangsenlin]# touch {01..10}
[root@nfs01 ~/yangsenlin]# ll
total 0
-rw-r–r– 1 root root 0 Oct 25 15:57 01
-rw-r–r– 1 root root 0 Oct 25 12:44 01.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 02
-rw-r–r– 1 root root 0 Oct 25 12:44 02.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 03
-rw-r–r– 1 root root 0 Oct 25 12:44 03.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 04
-rw-r–r– 1 root root 0 Oct 25 12:44 04.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 05
-rw-r–r– 1 root root 0 Oct 25 12:44 05.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 06
-rw-r–r– 1 root root 0 Oct 25 12:44 06.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 07
-rw-r–r– 1 root root 0 Oct 25 12:44 07.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 08
-rw-r–r– 1 root root 0 Oct 25 12:44 08.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 09
-rw-r–r– 1 root root 0 Oct 25 12:44 09.txt
-rw-r–r– 1 root root 0 Oct 25 15:57 10
-rw-r–r– 1 root root 0 Oct 25 12:44 10.txt
[root@nfs01 ~/yangsenlin]# rsync -av * rsync_backup@backup::data –exclude-from=/tmp/paichu.txt –password-file=/etc/rsync.client.mima
sending incremental file list
01
01.txt
02
02.txt
03.txt
04
04.txt
05.txt
06
06.txt
07
07.txt
08
08.txt
09
09.txt
10.txt
sent 998 bytes received 347 bytes 2,690.00 bytes/sec
total size is 0 speedup is 0.00
服务端
[root@backup /data]# ll
total 0
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 01
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 01.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 02
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 02.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 03.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 04
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 04.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 05.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 06
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 06.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 07
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 07.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 08
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 08.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 15:57 09
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 09.txt
-rw-r–r– 1 rsync rsync 0 Oct 25 12:44 10.txt
[root@backup /data]#
“`
#### 5.4 保持源与目标数据一致
“`sh
[root@nfs01 ~/yangsenlin]# rsync -avP –delete rsync_backup@backup::data –exclude-from=/tmp/paichu.txt –password-file=/etc/rsync.client.mima
receiving incremental file list
drwxr-xr-x 216 2024/10/25 15:58:55 .
-rw-r–r– 0 2024/10/25 15:57:27 01
-rw-r–r– 0 2024/10/25 12:44:51 01.txt
-rw-r–r– 0 2024/10/25 15:57:27 02
-rw-r–r– 0 2024/10/25 12:44:51 02.txt
-rw-r–r– 0 2024/10/25 12:44:51 03.txt
-rw-r–r– 0 2024/10/25 15:57:27 04
-rw-r–r– 0 2024/10/25 12:44:51 04.txt
-rw-r–r– 0 2024/10/25 12:44:51 05.txt
-rw-r–r– 0 2024/10/25 15:57:27 06
-rw-r–r– 0 2024/10/25 12:44:51 06.txt
-rw-r–r– 0 2024/10/25 15:57:27 07
-rw-r–r– 0 2024/10/25 12:44:51 07.txt
-rw-r–r– 0 2024/10/25 15:57:27 08
-rw-r–r– 0 2024/10/25 12:44:51 08.txt
-rw-r–r– 0 2024/10/25 15:57:27 09
-rw-r–r– 0 2024/10/25 12:44:51 09.txt
-rw-r–r– 0 2024/10/25 12:44:51 10.txt
sent 48 bytes received 368 bytes 832.00 bytes/sec
total size is 0 speedup is 0.00
[root@nfs01 ~/yangsenlin]#
“`
## 2 存储服务
存储: 用于存放用户上传的内容(数据),一般应用在网站集群中.
为何用?
如果不使用存储,用户上传的数据就直接存放在网站服务器上了,用户下次访问就可能找不到,因为下次访问到的网站服务器可能不是上一次访问到的服务器.
如果使用存储,用户上传的内容存放在存储上面,用户访问就会访问存储.
位置: 网站后排
\Typora\os-services\image-20250103125859539.png)
NFS原理
NFS:网络文件系统
NFS服务端:2个服务组成
NFS服务
rpcbind(portmap)rpc服务(远程调用协议)
\Typora\os-services\image-20250103125907669.png)
### 2.1 环境说明
| 环境 | 主机 | ip |
| ——— | —— | ————————– |
| nfs服务端 | nfs01 | 192.168.137.31/172.16.1.31 |
| nfs客户端 | web01 | 192.168.137.7/172.16.1.7 |
| nfs客户端 | web012 | 192.168.137.8/172.16.1.8 |
\Typora\os-services\image-20250103125945070.png)
\Typora\os-services\image-20250103130023907.png)
| 服务端流程 | 客户端流程 |
| ————————– | ——————— |
| 部署与检查 | 部署与检查 |
| 服务启动,rpcbind,nfs | 不需要启动 |
| 创建共享目录,修改权限 | 创建挂载点 |
| 修改配置文件,并reload nfs | mount挂载和/etc/fstab |
排错指令: rpcinfo -p ip 和showmount -e ip
### 2.2 服务器部署
“`sh
安装
[root@nfs01 ~]# yum install -y rpcbind nfs-utils
启动rpcbind和nfs,rpcbind先启动,关闭时相反
[root@nfs01 ~]# systemctl enable –now rpcbind
Created symlink /etc/systemd/system/multi-user.target.wants/rpcbind.service → /usr/lib/systemd/system/rpcbind.service.
[root@nfs01 ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
[root@nfs01 ~]# systemctl enable –now nfs
Created symlink /etc/systemd/system/multi-user.target.wants/nfs-server.service → /usr/lib/systemd/system/nfs-server.service.
[root@nfs01 ~]# rpcinfo -p
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 41798 status
100024 1 tcp 55417 status
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100021 1 udp 39149 nlockmgr
100021 3 udp 39149 nlockmgr
100021 4 udp 39149 nlockmgr
100021 1 tcp 37447 nlockmgr
100021 3 tcp 37447 nlockmgr
100021 4 tcp 37447 nlockmgr
[root@nfs01 ~]#
修改配置文件,重启服务
[root@nfs01 ~]# mkdir /nfsdata
[root@nfs01 ~]# id nobody
uid=65534(nobody) gid=65534(nobody) groups=65534(nobody)
[root@nfs01 ~]# chown -R nobody.nobody /nfsdata/
[root@nfs01 ~]# cat /etc/exports
/nfsdata 172.16.1.0/24(rw),12.168.17.0/24(rw)
[root@nfs01 ~]# systemctl reload nfs
Job for nfs-server.service failed.
See “systemctl status nfs-server.service” and “journalctl -xe” for details.
[root@nfs01 ~]# vi /etc/exports
[root@nfs01 ~]# systemctl reload nfs
[root@nfs01 ~]# cat /etc/exports
/nfsdata 172.16.1.0/24(rw) 12.168.17.0/24(rw)
[root@nfs01 ~]#
测试连接
[root@nfs01 ~]# mount 172.16.1.31:/nfsdata /mnt
[root@nfs01 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 963M 0 963M 0% /dev
tmpfs 979M 0 979M 0% /dev/shm
tmpfs 979M 9.0M 970M 1% /run
tmpfs 979M 0 979M 0% /sys/fs/cgroup
/dev/mapper/klas-root 97G 6.5G 91G 7% /
tmpfs 979M 64K 979M 1% /tmp
/dev/sda1 1014M 151M 864M 15% /boot
tmpfs 196M 0 196M 0% /run/user/0
172.16.1.31:/nfsdata 97G 6.5G 91G 7% /mnt
[root@nfs01 ~]# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
172.16.1.31:/nfsdata 97G 6.5G 91G 7% /mnt
[root@nfs01 ~]#
“`
### 2.3 客户端挂载
“`sh
客户端1
[root@web01 ~]# mkdir /upload
[root@web01 ~]# mount 172.16.131:/nfsdata /upload
^C
[root@web01 ~]# mount 172.16.1.31:/nfsdata /upload
[root@web01 ~]# echo “172.16.1.31:/nfsdata /upload nfs defaults 0 0″>>/etc/fstab
客户端2
[root@web01 ~]# mkdir /upload
[root@web01 ~]# mount 172.16.131:/nfsdata /upload
^C
[root@web01 ~]# mount 172.16.1.31:/nfsdata /upload
[root@web02 ~]# echo “172.16.1.31:/nfsdata /upload nfs defaults 0 0″>>/etc/fstab
[root@web02 ~]# grep nfs /etc/fstab
172.16.1.31:/nfsdata /upload nfs defaults 0 0
[root@web02 ~]#
“`
### 2.4 故障
“`sh
nfs服务端异常故障案例
现象:df -h或ls挂载点的时候夯住.
原因:一般nfs服务端问题
解决:在/proc/mounts中过滤nfs,找出nfs挂载点,通过umount -lf强制卸载,然
后重新挂载即可
1.挂载好nfs客户端
mount -t nfs 172.16.1.31:/data /mnt/
2.关闭nfs服务端
3. 来的客户端
df -h
4. 在/proc/mounts中过滤nfs,找出nfs挂载点,通过umount -lf强制卸载,然后重新挂载即可
“`
### 2.5 服务端核心配置
| 服务端配置选项 | 说明 |
| ————– | ———————————————————— |
| rw | 读写 |
| ro | 只读 |
| sync | 同步,只要有文件上传,就立刻把数据写到磁盘 |
| async | 异步,用户上传的数据,nfs先临时存放到内存中,过一段时间写入到磁盘. 并发高,数据可能丢失 |
### 2.6 服务端用户压缩
现象:客户端 访问的时候的用户root,到了服务端变成了nfsnobody/nobody
NFS客户端挂载NFS服务端后,创建的文件默认属于nfsnobody,这种操作就叫用户压缩(映射).
用户压缩是通过NFS服务端的配置实现
| 服务端配置选项-用户压缩 | 说明 |
| ———————– | ———————————————————— |
| root_squash | 不配置这个选项就是默认,客户端是root,到了nfs就会被压缩 |
| no_all_squash | 默认,如果不是root,则不进行压缩 |
| all_squash | 所有用户都进行压缩 |
| anonuid和anongid | 用于指定压缩的匿名用户(默认是nobody)anonuid=65534,anongid=65534 |
用户压缩/用户映射: NFS客户端访问NFS共享目录的时候变成了什么用户.
nfs客户端用户 nfs服务端用户
root —> nfsnoboby
### 2.7 用户压缩案例
用户压缩案例: 搭建网站,对存储提出一些需求,
nfs服务端设置/nfs/pics共享目录,匿名用户为www(都压缩为www).
www用户的uid,gid:1999 (服务端,客户端统一)
客户端挂载到/upload-pic/
流程 C(Client 客户端) S(Server 服务端)
CS:部署nfs服务,rpcbind ✅
CS:添加用户www,指定uid,gid ✅
S:创建目录,修改权限,修改服务端配置文件 ✅
C:客户端进行挂载测试 ✅
\Typora\os-services\image-20250107123532613.png)
“`SH
服务端
[root@nfs01 ~]# groupadd -g 1999 www
[root@nfs01 ~]# useradd -g www -s /bin/bash -m -u 1999 www
[root@nfs01 ~]# mkdir /nfs/pics
mkdir: cannot create directory ‘/nfs/pics’: No such file or directory
[root@nfs01 ~]# mkdir /nfs/pics -p
[root@nfs01 ~]# chown -R www.www /nfs/pics/
[root@nfs01 /var/lib/nfs]# systemctl reload nfs
[root@nfs01 /var/lib/nfs]# cat /etc/exports
/nfsdata 172.16.1.0/24(rw,anonuid=1999,anongid=1999) 192.168.17.0/24(rw,anonuid=1999,anongid=1999)
/nfs/pics 172.16.1.0/24(rw,anonuid=1999,anongid=1999) 192.168.17.0/24(rw,anonuid=1999,anongid=1999)
[root@nfs01 /nfs/pics]# ll
total 0
-rw-r–r– 1 www www 0 Oct 25 21:53 01
-rw-r–r– 1 www www 0 Oct 25 21:54 01.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 02
-rw-r–r– 1 www www 0 Oct 25 21:54 02.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 03
-rw-r–r– 1 www www 0 Oct 25 21:54 03.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 04
-rw-r–r– 1 www www 0 Oct 25 21:54 04.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 05
-rw-r–r– 1 www www 0 Oct 25 21:54 05.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 06
-rw-r–r– 1 www www 0 Oct 25 21:54 06.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 07
-rw-r–r– 1 www www 0 Oct 25 21:54 07.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 08
-rw-r–r– 1 www www 0 Oct 25 21:54 08.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 09
-rw-r–r– 1 www www 0 Oct 25 21:54 09.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 10
-rw-r–r– 1 www www 0 Oct 25 21:54 10.txt
[root@nfs01 /nfs/pics]#
客户端1
[root@web02 ~]# mkdir /upload-pic
[root@web02 ~]# groupadd -g 1999 www
[root@web02 ~]# useradd -g www -u 1999 -s /bin/bash -m www
[root@web02 ~]# chown -R www.www /upload-pic/
[root@web01 /upload-pic]# touch {01..10}.txt
[root@web01 /upload-pic]# ll
total 0
-rw-r–r– 1 www www 0 Oct 25 21:53 01
-rw-r–r– 1 www www 0 Oct 25 21:54 01.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 02
-rw-r–r– 1 www www 0 Oct 25 21:54 02.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 03
-rw-r–r– 1 www www 0 Oct 25 21:54 03.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 04
-rw-r–r– 1 www www 0 Oct 25 21:54 04.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 05
-rw-r–r– 1 www www 0 Oct 25 21:54 05.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 06
-rw-r–r– 1 www www 0 Oct 25 21:54 06.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 07
-rw-r–r– 1 www www 0 Oct 25 21:54 07.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 08
-rw-r–r– 1 www www 0 Oct 25 21:54 08.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 09
-rw-r–r– 1 www www 0 Oct 25 21:54 09.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 10
-rw-r–r– 1 www www 0 Oct 25 21:54 10.txt
[root@web01 /upload-pic]#
客户端2
[root@web01 ~]# mkdir /upload-pic
[root@web01 ~]# groupadd -g 1999 www
[root@web01 ~]# useradd -g www -u 1999 -s /bin/bash -m www
[root@web01 ~]# chown -R www.www /upload-pic/
[root@web02 /upload-pic]# touch {01..10}
[root@web02 /upload-pic]# ll
total 0
-rw-r–r– 1 www www 0 Oct 25 21:53 01
-rw-r–r– 1 www www 0 Oct 25 21:54 01.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 02
-rw-r–r– 1 www www 0 Oct 25 21:54 02.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 03
-rw-r–r– 1 www www 0 Oct 25 21:54 03.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 04
-rw-r–r– 1 www www 0 Oct 25 21:54 04.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 05
-rw-r–r– 1 www www 0 Oct 25 21:54 05.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 06
-rw-r–r– 1 www www 0 Oct 25 21:54 06.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 07
-rw-r–r– 1 www www 0 Oct 25 21:54 07.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 08
-rw-r–r– 1 www www 0 Oct 25 21:54 08.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 09
-rw-r–r– 1 www www 0 Oct 25 21:54 09.txt
-rw-r–r– 1 www www 0 Oct 25 21:53 10
-rw-r–r– 1 www www 0 Oct 25 21:54 10.txt
“`
服务端cat /var/lib/nfs/etab
\Typora\os-services\image-20250107123544616.png)
### 2.8 nfs优化
mount -o noexec,nosuid,nodev -t nfs 172.16.1.31:/data
/video/
\#这几个是客户端挂载选项
noexec 挂载的nfs目录中如果有命令,无法运行。
nosuid 带有suid的命令
nodev 带有特殊属性的文件。
### 2.9 nfs小结
说出来网站为何是否存储服务(共享存储)
存储选型
搭建NFS存储,对服务进行配置(比如共享/nfsdata目录)
用户映射选项:all_squash,anonuid,anongid
故障与排查:rpcinfo -p ip ,showmount -e ip
## 3 实时同步
实时同步都是inotify+rsync
lrsync=inotify+rsync
| 角色 | 说明 | 共享目录 |
| ———— | ———————- | ————– |
| backup服务器 | rsync服务端 | 共享/nfsbackup |
| nfs服务器 | 部署lsyncd实时同步服务 | 监控/data |
### 3.1 部署准备
“`sh
backup服务器添加/etc/rsyncd.conf配置
[root@backup ~]# cat >>/etc/rsyncd.conf<
[root@yangsenlin-m01 ~]# cat /etc/sysconfig/iptables
[root@yangsenlin-m01 ~]# iptables-restore > /etc/sysctl.conf
sysctl -p
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j SNAT –to-source 10.0.0.61 10.0.0.61是网关外网地址
公网ip不固定
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
“`
#### 2 端口转发
“`sh
iptables -t nat -A PREROUTING -d 10.0.0.61 -p tcp –dport 9000 -j DNAT –to-destination 172.16.1.7:22
“`
#### 3 ip映射
“`sh
iptables -t nat -A PREROUTING -d 10.0.0.62 -j DNAT –to-destination 172.16.1.7
“`