排错思路:
1. 环境问题
- SElinux
- firewalld
网络是否能通
2. 配置问题
所有的故障只会出现在你曾经修改过的文件中
- /etc/rsyncd.conf
- /etc/rsyncd.password
文件名不匹配
语法问题
权限问题
掘地蜂
引出扩展:
一台 Rsync 服务端提供备份, 并根据客户端提交备份校验, 校验结果以邮件的方式通知管理员
一台 Rsync 客户端自己收集需要备份内容, 通过定时任务定期推送至服务端
如果多加一台 Rsync 客户端, 这时我们应该怎么做才能最高效
实现思路:
1. 安装 rsync
2. 将客户端的备份脚本拉过来就可以了
1.NFS 基础概述
NFS:Network File System 网络文件系统
通过局域网络让不同的主机系统之间可以共享文件或目录
主要实现 Linux 系统之间的文件共享 (早期)
小文件存储系统:(Moosefs,FastDFS)
大文件存储系统:(glusterfs,HDFS)
文件系统: ext4 xfs
为什么要使用 NFS 服务器进行数据共享
1. 实现多台服务器之间数据共享
2. 实现多台服务器之间数据的一致
2.NFS 应用场景
场景 1:
用户 A 上传一张图片至 web1 服务器
B 用户访问该图片时, B 用户的访问请求被分发到了 Web2 上面, 结果无法看到 A 用户上传的图片
场景 2:
用户 A 上传一张图片至 Web1 服务器, 然后 web1 上传至共享服务器上面
B 用户访问该图片时, 无论 B 用户的访问请求被分发到了 Web1 或 Web2 上面, 都能看到 A 用户上传的图片
3.NFS 实现原理
NFS 守护进程
RPC.nfsd
守护进程, 管理 NFS 服务
RPC.mount
管理文件系统
本地文件操作方式
1. 当用户执行 mkdir 命令, 该命令会通过 shell 解释器翻译给内核, 由内核解析完成后驱动硬件, 完成相应的操作.
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 服务
pc 过程调用
4.NFS 服务实践部署
1). 环境准备:
角色 外网 IP(NAT) 内网 IP(LAN) 主机名
Rsync 服务端 eth0:10.0.1.51 eth1:172.16.1.51 backup
Rsync 客户端 eth0:10.0.1.41 eth1:172.16.1.41 nfs
防火墙, SElinux 关闭
2). 安装 nfs
[[email protected] ~]# yum install -y nfs-utils rpcbind
3). 配置
主配置文件 / etc/exports, 默认空
格式:
共享目录的路径 允许访问的 NFS 客户端 (共享权限参数)
共享目录的路径: 服务端本地目录路径
允许访问的客户端: ip 或域名
网段: 172.16.1.0/24
主机: 172.16.1.41/32
域名:*.oldboy.com
共享权限:
参数 参数作用
rw 读写权限 ***
ro 只读权限
root_squash 当 NFS 客户端以 root 管理员访问时, 映射为 NFS 服务器的匿名用户
no_root_squash 当 NFS 客户端以 root 管理员访问时, 映射为 NFS 服务器的 root 用户
all_squash 无论 NFS 客户端使用什么账户访问, 均映射为 NFS 服务器的匿名用户 ***
sync 同时将数据写入到内存与硬盘中, 保证不丢失数据 ***
async 优先将数据保存到内存, 然后在写入硬盘, 这样效率更高, 但可能丢失数据
anonuid 配置 all_squash 使用, 指定 NFS 的用户 UID, 必须存在系统 ***
anongid 配置 all_squash 使用, 指定 NFS 的用户 UID, 必须存在系统 ***
参考写法:
- /data 172.16.1.0/24(rw,sync,all_squash),0.0.0.0/0(ro)
- /backup 172.16.1.41/32(rw)
- /backup *.oldboyedu.com(rw)
- [[email protected] ~]# echo "/data 172.16.1.0/24(rw,sync,all_squash)"> /etc/exports
4). 创建相关环境
- [[email protected] ~]# mkdir /data
- [[email protected] ~]# chown -R nfsnobody.nfsnobody /data
5). 启动服务
- [[email protected] ~]# systemctl restart nfs-server rpcbind
- [[email protected] ~]# systemctl status nfs-server rpcbind
6). 验证是否生效
- [[email protected] ~]# showmount -e
- Export list for nfs:
- /data 172.16.1.0/24
5.NFS 客户端挂载
1) 安装工具包
[[email protected] ~]# yum install -y rpcbind nfs-utils
2) 客户端使用 showmount -e 查看远程服务器 rpc 提供的可挂载 nfs 信息
- [[email protected] ~]# showmount -e 172.16.1.41
- Export list for 172.16.1.41:
- /data 172.16.1.0/24
如果本地 hosts 文件有解析记录, 可以使用主机名查询
- [[email protected] ~]# showmount -e nfs
- Export list for nfs:
- /data 172.16.1.0/24
3) 在 NFS 客户端创建一个挂载目录, 然后使用 mount 命令挂载
- mkdir /nfsdir
- mount 172.16.1.31:/data /nfsdir
挂载前的目录权限
[[email protected] ~]# ll -ld /nfsdir/
drwxr-xr-x 2 root root 6 1 月 19 19:35 /nfsdir/
挂载后的目录权限
- [[email protected] ~]# mount 172.16.1.41:/data /nfsdir
- [[email protected] ~]# ll -ld /nfsdir/
drwxr-xr-x 2 nfsnobody nfsnobody 6 1 月 19 19:04 /nfsdir/
注意: 目录的共享权限与本地权限必须全部能读写, 才能对目录里面内容进行操作
永久挂载:
- chattr +a /etc/fstab
- VIM /etc/fstab
- 172.16.1.41:/data /var/www/html nfs defaults 0 0
- echo "172.16.1.41:/data /var/www/html nfs defaults,_netdev 0 0">> /etc/fstab #注意用追加输出
- [[email protected] HTML]# cat /etc/fstab
- ....
- #
- /dev/mapper/CentOS-root / xfs defaults 0 0
- UUID=19ad14dc-26ff-4b14-86e7-c4e2182e820a /boot xfs defaults 0 0
- /dev/mapper/CentOS-swap swap swap defaults 0 0
- 172.16.1.41:/data /var/www/HTML nfs defaults,_netdev 0 0
出现网络故障时, 强制卸载 umount -lf
练习
1). 环境准备:
角色 外网 IP(NAT) 内网 IP(LAN) 主机名
Rsync 服务端 eth0:10.0.1.7 eth1:172.16.1.51 web01
Rsync 服务端 eth0:10.0.1.8 eth1:172.16.1.51 web02
Rsync 客户端 eth0:10.0.1.41 eth1:172.16.1.41 nfs
要求, 访问 web01,web02 的页面是一样的, 修改 nfs 的共享页面内容, 两台 Web 一致
服务端:
1). 安装 nfs
[[email protected] ~]# yum install -y nfs-utils rpcbind
2). 修改配置文件
echo "/data 172.16.1.0/24(rw,sync,all_squash)"> /etc/exports
3). 创建目录, 并修改所属
- [[email protected] ~]# mkdir /data
- [[email protected] ~]# chown -R nfsnobody.nfsnobody /data
4). 启动服务
systemctl restart nfs-server rpcbind
5). 使用 showmount 命令验证是否生效
- [[email protected] ~]# showmount -e
- Export list for nfs:
- /data 172.16.1.0/24
客户端:
1. 部署 apache, 并启动 apache 服务
- yum install -y httpd
- systemctl start httpd
2. 安装工具包 nfs-utils, 并启动 rpcbind
- yum install -y nfs-utils rpcbind
- systemctl restart rpcbind
3. 使用 showmount -e 查看 nfs 服务端共享信息
showmount -e 172.16.1.41
4. 挂载共享目录到网页文档根目录 / var/www/HTML
mount 172.16.1.41:/data /var/www/HTML
5. 验证
- echo "hello wordasdasdas"> index.HTML
- [[email protected] HTML]# curl 172.16.1.7
- hello wordasdasdas
- [[email protected] HTML]# curl 172.16.1.8
- hello wordasdasdas
来源: http://www.bubuko.com/infodetail-3388694.html