- 最近机房老折腾NAS,动不动服务器上挂的NAS就掉了,业务就跑过来让重挂。
- 写个脚本每天定时检查以下NAS挂载的情况,如果掉了就给重新挂上
- NAS掉了以后需要先umount掉再重新挂上
#!/bin/bash
LOG_FILE="/root/mountCheck.log"
MOUNT_POINT="/mnt/nas"
STATUS_FILE="${MOUNT_POINT}/nasStatus.log"
get_hostname() {
hostname
}
log() {
local host_info=$(get_hostname)
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "[${timestamp}][${host_info}] $1" | tee -a $LOG_FILE
}
check_nas_mount() {
if ! df -Th | grep 'nfs' | grep -qw "$MOUNT_POINT"; then
log "基础检查失败:未检测到NFS挂载点"
return 1
fi
if [[ -f "$STATUS_FILE" ]]; then
if echo "[$(date '+%Y-%m-%d %H:%M:%S')] 验证写入" >> "$STATUS_FILE" 2>/dev/null; then
log "状态文件验证成功"
return 0
else
log "状态文件写入失败"
return 1
fi
else
log "未找到状态文件,尝试创建..."
echo "NAS状态验证文件" > "$STATUS_FILE" 2>/dev/null || {
log "状态文件创建失败"
return 1
}
return 0
fi
}
force_umount() {
umount -lf "$MOUNT_POINT" 2>/dev/null
return $?
}
mount_retry() {
mount -a >/dev/null 2>&1
}
main() {
if check_nas_mount; then
exit 0
fi
for i in {1..3}; do
log "恢复尝试 $i/3"
force_umount
mount_retry
sleep 3
if check_nas_mount; then
log "挂载恢复成功"
exit 0
fi
done
log "严重告警:NAS挂载恢复失败!"
exit 1
}
main