Compare commits

..

4 Commits

Author SHA1 Message Date
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
53c2dcced8 meta(kreknin): win10 resolved — Ignore reset paused state, RuTokens re-enumerated to matching addrs 2026-08-10 20:13:27 +03:00
6f60065991 meta(kreknin): md0/md1 system partitions repaired, disks green 2026-08-10 2026-08-10 20:13:27 +03:00
9c6ea001e9 meta(kreknin): rebuild md3 started 2026-08-10, cables reseated 2026-08-10 20:13:26 +03:00
3 changed files with 64 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
# Admin Task Board
_Updated: 2026-08-10 — 🟡 **[kreknin-repair-md3-rebuild] ребилд идёт, бэкапы ВОЗВРАЩЕНЫ.** Утро: vitya на месте, кабели перетыкнуты (sdb WD-WX32D12L8HTE вернулся, SMART PASSED, все 3 HDD на 6 Gbps), md3 rebuild старт 07:57 (`mdadm --add /dev/md3 /dev/sdb3`), md0/md1 починены (системные разделы добавлены во все 4 диска — «зелёные» в DSM), win10 resolved (RuToken re-enum, кнопка «Игнорировать»). **~11:40 отключение электричества в деревне** → NAS лёг (роутер/WAN жив — на UPS). Возврат 16:20: md3 собрался деградированным `[_UU]`, **sdb3 сам не вернулся** (прогресс rebuild НЕ переживает power-loss — контрольной точки нет), повторён `mdadm --add /dev/md3 /dev/sdb3` → recovery с 0.0%, ETA ~4-5 дн (разгон 3→10-25МБ/с). md0/md1 все 4 диска `[UUUU]` (утр. ремонт пережил ребут), md2/VMM здоров. **Бэкапы возвращены 2026-08-10 18:00 по указанию vitya (ДО ребилда — ребилд фоновый):** cron раскомментирован (vds-kzntsv 05:00 + books-vds 06:00), ручные прогоны ПОДТВЕРЖДЕНЫ на kreknin (vds-kzntsv 2026-08-10 66G / books-vds 15G, latest→08-10, 7 снапшотов у обоих). Находка: books-vds не доезжал до kreknin с 08-05 (08-06..08-09 + 08-10 06:05 rsync падал — timed out/no route; другой триггер не найден); застрявший ES-снапшот `daily-2026-08-10` удалён. Осталось: дождаться ребилда md3 → `btrfs scrub /volume1` → monitor на ребилд активен. Всё: `.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md`._
_Updated: 2026-08-04 — 🔵 **[coord-loader-admin-api-client] координатор.** Я (admin) назначен координатором таски pilorama98 `loader-migrate-to-admin-api-client` (перевод `apps/loader` с прямого DB на `@snolla/admin-api-client` от snolla). Письма-интро отправлены обоим (pilorama98 — report готовности, snolla — краткое описание клиента). Предпосылка S1: **ApiKeys DDL прогнана на обоих боевых SNOLLA** (vds `MoreThenCms` + stostayer `stostayer`) — таблица + индексы + FK, RC=0, verify зелёный. См. `coord-loader-admin-api-client.md`._
_Updated: 2026-08-03 (2) — 🟢 **[labtools.ru cylindrical] CLOSED.** Фикс core 0.26.5 (store-only content-page резолвер) НЕ чинил: labtools — catalog-модуль (store отсутствует), linked-item provider = legacy `LinkedCatalogProductsProvider`. Реализован полный диспетчер `viewModels/linkedItemResolver.js` (порт `ILinkedEntitiesProvider`): dispatch по provider-строке → catalog (CatalogsService.findProductById) / blog (findPostByGlobalId) / page (getPageById) / store (fallback). core 0.26.6 published (verdaccio), 263/263. labtools yarn.lock → 0.26.6 (d263e1c), стек 17 redeploy (env 8/8, pullImage), **LIVE GREEN**: cylindrical 0 empty href/src, 8 карточек гидратированы (round-xrf/vacuum-ir/…), остальные страницы 200. Таска snolla закрыта. Rollback = `0dc0b4e`._
_Updated: 2026-08-02 — ⚪ **[kreknin-repair-md3-rebuild] заведена.** Xpenology kreknin деградед после продувки компрессором 2026-07-31: sdb выпал (md3 `[_UU]`), кабели sda/sdc срыв. **Rescue полный DONE 2026-08-02** (USB 2TB `/mnt/rescue`, 1.1TB: netbackup/*.tar включая diskstation_1.hbk 430G + userdata 5 шар Алексея), массив за 2 суток чтения — 0 новых ошибок. sdd/VM-том восстановлен (md2, `/volume2` rw). **Ежедневные бэкапы DISABLED** (vds-kzntsv 05:00 + books-vds 06:00, cron закомментированы, `.bak.20260731`). Осталось: power-off → перетык SATA (sda/sdc свежие, sdb питание+data) → Repair md3 (реборн) → вернуть бэкапы. Всё: `.tasks/kreknin-repair-md3-rebuild.md` + `.wiki/entities/kreknin-synology.md`._

View File

@@ -3,7 +3,7 @@ title: Kreknin Synology (backup target + DDNS)
type: entity
tags: [hardware, nas, synology, backup, hyperbackup]
sources: [../sources/nas-recovery-session-2026-05-18.md]
updated: 2026-05-19
updated: 2026-08-10
---
# Kreknin Synology
@@ -94,11 +94,33 @@ USB **2TB WD20EARX** (sdq) отформатирован в один btrfs, см
- `/mnt/rescue/userdata/`: `docker.tar` 130G (rc=1 — файлы менялись при чтении, архив валиден), `homes.tar` 118G, `work.tar` 32G, `downloads.tar` 25G, `documents.tar` 5.9G
- Итого 1.1TB / 726G свободно. Массив за 2 суток последовательного чтения — **ноль новых ошибок**.
## План ремонта (осталось)
## Ремонт 2026-08-10 (кабели перетыкнуты vitya, rebuild запущен)
1. **Power-off** (после подготовки, НЕ до слива — данные теперь спасены, риск холодного старта приемлем)
2. Переподключить SATA: **sda, sdc** (свежие кабели), **sdb** (питание+дата)
3. sdb определился + SMART ок → DSM Storage Manager → **Repair md3** → ребилд; не определился → 4TB замена
4. sda должен вернуться на 6 Gbps, CRC не расти
5. **Вернуть бэкапы**: раскомментировать `vds-backup` + `books-vds-backup`
6. (необязательно) sdd в md2 уже восстановлен — проверить VMM виртуалки
Съезд к Алексею: power-off, переподключены SATA (sda/sdc/sdb), свежие кабели. Проверка через SSH (ключ `id_ed25519_kreknin`):
- **sdb** (WD-WX32D12L8HTE) — снова определяется, разделы на месте, SMART **PASSED** (0 realloc/pending)
- **sda** (WD40EFPX) — линк вернулся на **6.0 Gbps** (было 1.5), SMART PASSED, **CRC=10** (не растёт)
- **sdc** (WD40EFAX SMR) — SMART PASSED, CRC=213 (историческое, кабельное)
- Все 3 диска на 6.0 Gb/s. Заметка: в таблице выше у sda/sdc POH перепутаны местами — реально WD40EFPX=30492ч, WD40EFAX=6800ч.
**Repair md3:** `mdadm --add /dev/md3 /dev/sdb3` (sdb3 валидный stale-член, тот же UUID `717d6154…`, роль slot 0, Events 82069 vs массив 132876). Rebuild запущен 2026-08-10 07:57, `State: active, degraded, recovering`, sdb3 = `spare rebuilding`. **Скорость ~10-25 MB/s, оценка 43-106 ч** — старые диски (30k ч) + live-нагрузка (ownCloud cron, VMM etcd, docker). Не форсировать — массив живой.
**btrfs /volume1:** `corruption_errs 1` (счётчик с инцидента) — после ребилда прогнать `btrfs scrub`.
**VMM (win10):** md2/volume2 здоровы (clean, rw OK). ВМ `win10` (4 vcpu, autorun=1, vdisk 91GiB на /volume2/@iSCSI/LUN/VDISK_BLUN/8c809cc5/…32c7a0be…_00000) — **RESOLVED 2026-08-10**: застряла в «Приостановлено» (statevalue 10, от 5 авг) с неработающим resume. Корень: USB-проброс двух **RuToken ECP (0a89:0030)** на жёсткие адреса bus:1 dev6/dev7; после перетыков свистки вставали на другие dev → libvirt «Did not find USB device». Лечение: кнопка **«Игнорировать»** в VMM сбросила зависшее состояние → при старте свистки пере-нумеровались на 6,7 (совпало с конфигом) → ВМ запустилась, оба RuToken проброшены. Если свисток снова потеряется — перепривязать в GUI (Edit → USB). win10-old (репо 4cfcdd90 на /volume1) — НЕ трогать. libvirtd/etcd живы.
**Системные разделы (md0/md1) починены 2026-08-10:** DSM ругался «Отказ системного раздела» на sda/sdb/sdc — после инцидента при загрузке в 16-слотовое boot-зеркало собрался только sdd, системные разделы HDD остались вне массива (superblock'и валидны, UUID совпадали). `mdadm --add /dev/md0 {sda1,sdb1,sdc1}` + `mdadm --add /dev/md1 {sda2,sdb2,sdc2}` → ресинхронизация, диски **зелёные** в DSM. На md3 не влияло (копейки I/O: 8MB+2GB).
**Бэкапы ВОЗВРАЩЕНЫ 2026-08-10 (18:00)** по прямому указанию vitya (ДО завершения ребилда — ребилд в фоне на idle-IO). Cron-строки раскомментированы: vds-kzntsv `0 5 * * *`, books-vds `0 6 * * *` (снят префикс `#DISABLED-kreknin-sick `). Оба прогнаны вручную и **ПОДТВЕРЖДЕНЫ на kreknin**: vds-kzntsv `2026-08-10` 66G (7 снапшотов), books-vds `2026-08-10` 15G (7 снапшотов), latest→08-10, `/volume1` 5.4T free (24%).
**Находка:** бэкапы books-vds НЕ доезжали до kreknin с **08-05** — run.sh гонялся 08-01..08-09 + 08-10 06:05 (локальные ES-снапшоты создавались), но rsync падал (`Connection timed out` / `No route to host`). Другого триггера кроме cron.d-строки не найдено (нет crontab/systemd-таймера) — вероятно ручные запуски. vds-kzntsv отключение держалось (не ходил с 07-31). Застрявший ES-снапшот `daily-2026-08-10` от упавшего прогона удалён (коллизия имён → 400 убил бы следующий прогон). Осталось после ребилда: `btrfs scrub /volume1`.
**Отключение питания 2026-08-10 (~11:40, деревня, временно):** NAS недоступен с 2 сетей (рабочая станция + VDS); роутер/WAN жив (traceroute доходит до 195.19.90.188 ~5мс — на UPS/другой линии). Причина — временное отключение электричества у Алексея, не поломка. После возврата питания (16:20) md3 собрался деградированным `[_UU]` (sdb3 сам в массив не вернулся), **md0/md1 — все 4 диска `[UUUU]`** (утренний ремонт пережил ребут), md2 здоров. Прогресс ребилда утра **сброшен** — `mdadm --add /dev/md3 /dev/sdb3` повторён (валидный член, UUID 717d6154…), recovery с 0.0%, ETA ~4+ дня (разгон с ~3МБ/с до 10-25). **Урок: прогресс mdadm-rebuild НЕ переживает жёсткое отключение** (контрольной точки нет) — после power-loss надо проверять /proc/mdstat и пере-dadd sdb3.
## План ремонта (статус)
1. ~~Power-off~~ ✅ сделано vitya 2026-08-10
2. ~~Переподключить SATA~~ ✅ сделано (sda/sdc/sdb), все на 6 Gbps
3. **Repair md3 — В ПРОЦЕССЕ** (rebuild ~4 дня, DSM «оптимизация»)
4. ✅ sda вернулся на 6 Gbps, CRC=10 (не растёт)
5. ✅ **Бэкапы возвращены ДОСРОЧНО** 2026-08-10 (указание vitya — ребилд фоновый); `btrfs scrub /volume1` — после завершения ребилда
6. ⏳ VMM win10 — проверить в GUI (storage здоров)

33
kreknin_rebuild_mon.sh Normal file
View 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