某CICD系统分布式存储异常处理脚本

📅 发布时间:2026/7/3 11:57:57 👁️ 浏览次数:
某CICD系统分布式存储异常处理脚本
#/bin/bash## authored by zhaoxc# 漏扫工具会使得 glusterfs 6.5 版本的卷处于异常状态。 异常时 gluster vol status xxx 状态为 N ; 而命令返回值无异常#VOL_LISTvol VOL_FILE/root/glusterfs-recovery.loglog(){echo$(date%Y-%m-%d %H:%M:%S)-$1|tee-a$LOG_FILE}# 检查卷状态 返回状态字符串check_volume(){localvol$1localstatus_outputlocalvol_statusNULLNULL# 获取卷状态详细输出status_output$(/usr/sbin/gluster volume status$vol21)localsingle_line_output$(echo$status_output|tr\n )ifecho$single_line_output|grep-qBrick.*$vol;thenlocalbrick_section$(echo$single_line_output|grep-oBrick[^B]*$vol[^B]*)localonline_status$(echo$brick_section|grep-oE\s[YN]\s|tr-d )if[$online_statusN];thenvol_statusofflineelif[$online_statusY];thenvol_statusonlineelsevol_statusunknownfifiecho$vol_status}recover_volume(){localvol$1log开始恢复卷$vol# 停止卷log停止卷$volif/usr/sbin/gluster volume stop$volforce--modescript$LOG_FILE21;thenlog卷$vol停止成功elselog卷$vol停止操作完成fisleep5# 启动卷log启动卷$volif/usr/sbin/gluster volume start$vol$LOG_FILE21;thenlog卷$vol启动成功return0elselog卷$vol启动失败return1fi}main(){localvol_statusEmptyEmptylocalOFFLINE_VOLUMES()log 开始 GlusterFS 卷状态检查 log当前VOL_LIST的值$VOL_LISTlogVOL_LIST中的卷数量$(echo$VOL_LIST|wc-w)# 检查每个卷forvolin$VOL_LIST;dolog检查卷$vol# 获取卷状态vol_status$(check_volume$vol)log本卷检查的返回值为$vol_status# 根据状态决定是否重启if[$vol_statusoffline]||[$vol_statusunknown];thenOFFLINE_VOLUMES($vol)recover_volume$volelif[$vol_statusonline];thenlog卷$vol状态正常无需处理elselog卷$vol状态异常$vol_statusfilog---done# 输出结果摘要log 检查完成 if[${#OFFLINE_VOLUMES[]}-eq0];thenlog所有卷均在线elselog本次离线卷列表${OFFLINE_VOLUMES[*]}fi}# 执行主函数main