当前位置: 首页 > news >正文

day28-NFS

1.每日复盘与今日内容

1.1复盘

  • Rsync:本地模式、远程模式🍟🍟🍟🍟🍟、远程守护模式🍟🍟🍟🍟🍟
  • 安装、配置Rsync
  • 启动、测试服务
  • 备份案例

1.2今日内容

  • NFS优缺点
  • NFS服务:开启、配置、启动等🍟🍟🍟🍟🍟
  • NFS参数
  • Isync配置
  • 公司案例

2.NFS服务

1.作用:

实现数据一致性--共享存储

  • 哪为什么web01和web02同时访问不会显示端口占用呢?

原因:NFS有Portmap--端口映射,将端口映射到其他没被使用的上面

2.NFS存储优点

1️⃣NFS文件系统简单易用、方便部署、数据可靠、服务稳定、满足中小企业需求。

2️⃣NFS文件系统内存放的数据都在文件系统之上,所有数据都是能看得见。

3.NFS服务部署

  • 克隆服务器:

1.将两个网卡的最后一段改为31

2.将主机名改为NFS

1️⃣安装服务

yum -y install nfs-utils

2️⃣配置服务

# 配置文件默认为空
#进入/etc/exports
vim /etc/exports
#写入/data  172.16.1.0/24(rw,sync,all_squash)内容
/data  172.16.1.0/24(rw,sync,all_squash)
#挂载参数
#rw--可读可写
#sync--写入直接放入硬盘
#all_squash--匿名压缩(将客户端所有身份都设为匿名用户:默认为本地的傀儡用户)

3️⃣根据配置创建必要数据

#创建目录
mkdir /data
#设置/data属主属组
chown nobody.nobody /data
#检查
ll -d /data

4️⃣启动服务

#开启服务
systemctl start nfs
#开机自启动
systemctl enable nfs

5️⃣检测服务的配置文件是否正确

#检查文件--如果有内容代表成功;没有内容代表失败
cat /var/lib/nfs/etab 

6️⃣客户端挂载使用

#1.查看服务端共享的网段
showmount -e 172.16.1.31
###############WEB01################
#2.挂载NFS网络磁盘
mount -t nfs 172.16.1.31:/data /mnt
#查看受否挂载成功
df-h
###############WEB02################
#相同的目录
mount -t nfs 172.16.1.31:/data /mnt
df -h#3.开机自动挂载
vim /etc/fstab
#写入内容
172.16.1.31:/data 			  /mnt  		  nfs     defaults        0 0

可以看到WEB01和WEB02都是操作的/mnt目录,可看作是共享目录

  • 验证:

第一步:WEB01在挂载处创建web01.txt在02和NFS上能否看到

root@WEB01 ~# touch /mnt/web01.txt
root@NFS ~# ll /data/
root@WEB02 ~# ll /mnt/

第二步:NFS在挂载处删除web01.txt在01和02上能否看到

root@NFS ~# rm -fr /data/web01.txt
root@WEB01 ~# ll /mnt/
root@WEB02 ~# ll /mnt/

4.NFS存储缺点

1️⃣存在单点故障, 如果构建高可用维护麻烦web->nfs()->backup

2️⃣NFS数据明文, 并不对数据做任何校验。

3️⃣客户端挂载NFS服务没有密码验证, 安全性一般(内网使用)

3.NFS参数

1.验证只读--ro

#1.将配置文件/etc/exports修改为如下
/data  172.16.1.0/24(ro,sync,all_squash)#2.重启生效
systemctl restart nfs
  • 客户端测试
#web01下创建
touch /mnt/web01.txt#web02下创建
touch /mnt/web02.txt

2.指定匿名用户 anonuid=666 anongid=666

#1.将配置文件/etc/exports修改为如下
/data  172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)#2.创建uid和gid为666的www虚拟用户
groupadd -g666 www
useradd -u666 -g666 -M -s /sbin/nologin www
id www#3.重启生效
systemctl restart nfs#4.修改目录的属主属组为www
chown www.www /data
ll -d /data

4.NFS单点故障

  • 第一问:31执行rsync推送命令,以什么身份写入到41/data目录?

答:使用rsync_backup身份。

/data 属主 数组 rsync rsync rwxr-xr-x

  • 第二问:web服务器挂载到41/data web服务器以什么身份进入到/data?

答:41部署NFS的匿名压缩用户为nobody

故先将两个用户统一

5.部署Isync服务

1️⃣用户统一为www用户--所有服务器

groupadd -g666 www
useradd -u666 -g666 -M -s /sbin/nologin www

2️⃣backup服务器增加一个data模块

cat /etc/rsyncd.conf
uid = www
gid = www
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup[data]			
path = /data#重启
systemctl restart rsyncd#设置属主属组
chown www.www /backup/ /data
ll -d /data#清空目录
rm -rf /data/*#NFS测试
rsync  -avz /etc/hosts rsync_backup@172.16.1.41::data

3️⃣NFS部署lsync服务实时监控/data

#1.安装
yum -y install lsyncd#2.配置
#配置文件写入/etc/lsyncd.conf
vim /etc/lsyncd.conf
settings {logfile = "/var/log/lsyncd/lsyncd.log",statusFile = "/var/log/lsyncd/lsyncd.status",maxProcesses = 2,nodaemon = false,
}
sync {default.rsync,source = "/data/",target = "rsync_backup@172.16.1.41::data",delete = true,delay = 15,rsync = {binary = "/usr/bin/rsync",password_file = "/etc/rsyncd.pwd",archive = true,compress = true,}
}###########配置详解#############
[root@nfs ~]# cat /etc/lsyncd.conf
settings {logfile = "/var/log/lsyncd/lsyncd.log",			# 日志文件statusFile = "/var/log/lsyncd/lsyncd.status",   # 状态日志文件maxProcesses = 2,								# 最大进程数量nodaemon = false,							    # 守护进程方式运行
}
#########如果还想添加监控模块,再复制以下修改即可
sync {default.rsync,									# 使用rsync命令source = "/data/",								# 实时监控的目录target = "rsync_backup@172.16.1.41::data",delete = true,delay = 1,										# 延时1秒					rsync = {binary = "/usr/bin/rsync",			        # 命令的绝对路径password_file = "/etc/rsyncd.pwd",			# 密码文件实现免交互archive = true,								# 类似-acompress = true,					        # 类似-z}
}
############################3.根据配置创建必要信息
echo 123 >/etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd
ll /etc/rsyncd.pwd#4.启动服务
systemctl start lsyncd
systemctl enable lsyncd#5.测试服务
root@WEB01 /mnt# touch 1.txt
#WEB02的/mnt上有

4️⃣41服务器部署NFS服务

#下载nfs服务
yum -y install nfs-utils
#/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)写入/etc/exports
vim /etc/exports
/data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
#查看
cat /var/lib/nfs/etab 
#开启服务
systemctl start nfs
#查看
cat /var/lib/nfs/etab 

5️⃣模拟31挂掉

ifdown ens34
  • df -h就会很卡--一直在尝试连接

6️⃣web01和web02卸载31然后挂载到41服务器

#使用/etc/mounts查看挂载点
cat /etc/mounts#强制卸载挂载点
umount -f /mnt#显示挂载情况
showmount -e 172.16.1.41#查看
mount -t nfs 172.16.1.41:/data /mnt
ll /mnt/

6.脚本案例

  • 环境准备

服务端: Rsync服务 10.0.0.41

客户端: 10.0.0.7 10.0.0.31

客户端脚本需求
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/web01_172.16.1.7_20251010
#命令拼接
date_dir=`hostname`_`hostname -I | awk '{print $1}'`_`date +%Y%m%d`
mkdir -p /backup/$date_dir2.客户端在本地打包备份(hosts passwd crontab)拷贝至/backup/web01_172.16.1.7_20251010
tar -zcf /backup/$date_dir.tar.gz /etc/hosts /etc/passwd3.客户端最后将备份的数据进行推送至备份服务器41
rsync -avz --password-file=/etc/rsync.pass /backup/$date_dir  rsync_backup@172.16.1.41::backup4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
find /backup/ -mtime +7|xargs rm -rf5.客户端每天凌晨1点定时执行该脚本(定时每分钟执行)
vim /usr/C.bash#设置变量
date_dir=`hostname`_`hostname -I | awk '{print $1}'`_`date +%Y%m%d`#命令操作
#2.创建唯一标识的目录 以主机名+IP+时间
mkdir -p /backup/$date_dir#3.打包重要的文件放入上面创建好的目录下
tar -zcf /backup/$date_dir.tar.gz /etc/hosts /etc/passwd /etc/crontab#4.md5sum校验
md5sum /backup/*.tar.gz > /backup/md5.log#5.推送目录到rsync服务器
rsync -avz --password-file=/etc/rsync.pass /backup/  rsync_backup@172.16.1.41::backup#6.删除7天前的文件
find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;#客户端每天凌晨1点定时执行该脚本
vim /etc/crontab
#写入
00 01 * * * root sh /usr/C.bash
  • 环境准备

#配置好邮件

yum install -y mailx sendmail

#将以下内容写到最后
cat >>/etc/mail.rc <<EOF
set from=lidao996@163.com
set smtp=smtp.163.com
set smtp-auth-user=lidao996@163.com
set smtp-auth-password=xxxxxxxx
set smtp-auth=login
EOF
服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
[root@backup ~]# cat /etc/rsyncd.conf 
uid = www
gid = www 
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 600
ignore errors
read only = false
list = false
auth users = rsync_backup
secrets file = /etc/rsync.passwd
log file = /var/log/rsyncd.log
#####################################
[backup]
comment = welcome to oldboyedu backup!
path = /backup[data]			# 增加data模块 对应的/data目录
path = /data2.服务端需要每天校验客户端推送过来的数据是否完整
md5sum -c  /backup/*_*_`date +%Y%m%d`/*.log > /opt/md5.txt3.服务端需要每天校验的结果通知给管理员
mail -s "${TIME}_备份校验结果" "邮箱" < /opt/md5.txt4.服务端仅保留6个月的备份数据,其余的全部删除
find /backup -mtime +180|xargs rm -rf

http://www.dtcms.com/a/319801.html

相关文章:

  • iOS混淆工具使用,后续维护与版本升级中实用的混淆策略
  • 代码随想录day58图论8
  • windows操作系统定时关机、重启指令记录
  • 一周学会Matplotlib3 Python 数据可视化-坐标轴 (Axis)
  • 进程间数据的关联与隔离
  • 管家婆软件如何设置默认税率?
  • AI创新中心从“空间集聚”到“生态共生”
  • 代码库详细笔记
  • P1690 贪婪的 Copy
  • [airplay2] airplay2简略介绍
  • 前端全局注册知识【持续更新】
  • 二分查找算法,并分析其时间、空间复杂度
  • IIS7.5下的https无法绑定主机头,显示灰色如何处理?
  • [ java SE ] 多人聊天窗口1.0
  • 强光干扰下裂缝漏检率↓82%!陌讯轻量化模型在道路巡检的落地实践
  • 2深度学习Pytorch-自动微分--梯度计算、梯度上下文控制(累计梯度、梯度清零)
  • Ethereum: 像Uniswap V3贡献者一样开发,克隆、编译与测试v3-core
  • 通过减少回表和增加冗余字段,优化SQL查询效率
  • LSTM 单变量时序预测—pytorch
  • vscode+latex本地英文期刊环境配置
  • VScode使用jupyter notebook,配置内核报错没有torch解决
  • 如何委托第三方检测机构做软件测试?
  • 鸿蒙 - 分享功能
  • 直播预告|鸿蒙生态下的 Flutter 开发实战
  • 非化学冷却塔水处理解决方案:绿色工业时代的革新引擎
  • Elasticsearch 文档分词器
  • 神经网络入门指南:从零理解 PyTorch 的核心思想
  • 2025 五大商旅平台管控力解析:合规要求下的商旅管理新范式
  • Flutter 布局控件使用详解
  • 【java基础|第十六篇】面向对象(六)——抽象和接口