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>
This commit is contained in:
33
kreknin_rebuild_mon.sh
Normal file
33
kreknin_rebuild_mon.sh
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user