Files
admin/kreknin_rebuild_mon.sh
vitya b01b23f811 meta(kreknin): backups re-enabled + verified after power-cut; rebuild restarted
- cron restored vds-kzntsv 05:00 + books-vds 06:00; manual runs VERIFIED on kreknin (vds-kzntsv 66G / books-vds 15G, latest->08-10, 7 snaps each)
- books-vds was stale since 08-05 (rsync fails, no alternate trigger); stale ES snapshot daily-2026-08-10 removed
- md3 rebuild restarted from 0 after power-cut (progress not checkpointed); md0/md1 all 4 disks green
- add kreknin_rebuild_mon.sh array monitor (md0/md1/md3 + CRC)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-10 20:13:27 +03:00

34 lines
1.5 KiB
Bash

#!/bin/bash
# kreknin array monitor — md0/md1 (system boot mirror) + md3 (data). Run with sudo via Monitor.
# Completion signal: sync_action idle AND mdadm Active Devices == Total Devices (works for 16-slot template too).
arrays="md0 md1 md3"
declare -A prev_state
declare -A prev_pct
declare -A crc0
while true; do
for a in $arrays; do
[ -e "/sys/block/$a/md/sync_action" ] || continue
act=$(cat "/sys/block/$a/md/sync_action" 2>/dev/null)
active=$(mdadm --detail "/dev/$a" 2>/dev/null | awk '/Active Devices/{print $3; exit}')
total=$(mdadm --detail "/dev/$a" 2>/dev/null | awk '/Total Devices/{print $3; exit}')
brk=$(sed -n "/^$a :/,/^$/p" /proc/mdstat | grep blocks | grep -o '\[[^]]*\]' | tail -1)
sig="$act|$brk|a=$active/t=$total"
if [ "${prev_state[$a]}" != "$sig" ]; then
echo "[$a-state] $sig"
prev_state[$a]="$sig"
fi
if [ "$act" = "idle" ] && [ "$active" = "$total" ] && [ "${prev_state[$a]}" != "DONE" ]; then
echo "[$a] COMPLETE healthy active=$active/$total $brk"
prev_state[$a]="DONE"
fi
done
pct=$(cat /sys/block/md3/md/sync_completed 2>/dev/null | awk -F/ '$2>0{printf "%d", $1*100/$2}')
m=$(( (pct+4)/5*5 ))
if [ "$m" -gt "${prev_pct[md3]:-0}" ]; then echo "[md3] $pct%"; prev_pct[md3]="$m"; fi
for d in sda sdb sdc; do
crc=$(smartctl -d sat -A /dev/$d 2>/dev/null | awk '/UDMA_CRC/{print $10; exit}')
[ -n "$crc" ] && { [ -n "${crc0[$d]}" ] && [ "$crc" -gt "${crc0[$d]}" ] && echo "[CRC-GROW] $d ${crc0[$d]}->$crc"; crc0[$d]=$crc; }
done
sleep 120
done