docs(cluster): pveelite - cauza confirmata, resetul adaptorului USB LAN

Nodul nu s-a oprit niciodata. La verificarea de azi avea uptime 17h46m, cu boot
pornit la 27.08 ora 16:03:06 - a mers toata noaptea, fara retea. Jurnalul
continua cu 58.454 de linii dupa 17:26:44, ceea ce inchide definitiv discutia
alimentare vs retea.

Vinovatul, din jurnalul kernel: Realtek RTL8156B (0bda:8156, driver r8152) pe
usb 2-3. La 16:01:45 si la 17:26:41 adaptorul s-a resetat si a fost re-enumerat.
Kernelul sterge interfata si o recreeaza - dar nimeni nu o readauga in vmbr0 si
nu o ridica, pentru ca nu exista regula de hotplug. Din acel moment masina merge
perfect si e invizibila in retea.

Partea care merita retinuta e de ce la 16:01 si-a revenit si la 17:26 nu. La
16:01 LRM-ul HA era activ, deci watchdog-ul era armat: pierderea retelei a dus la
pierderea quorumului, watchdog-mux a expirat la 16:02:39 si a resetat masina la
16:02:44 - repornire care a readus reteaua din intamplare, pentru ca la boot
interfetele se ridica prin auto. La 17:26 fence-ul mutase deja vm:109 pe pvemini,
LRM-ul era idle, watchdog-ul nearmat. Nimic nu a mai repornit masina. Singurul
lucru care "repara" defectul asta era un efect secundar, nu un mecanism proiectat
- pe un nod fara servicii HA, aceeasi defectiune devine permanenta si tacuta.

Reparat cu ifreload -a de la consola, la 09:49. Restul verificarii e curat: ZFS
ONLINE fara erori, cluster 3/3, SMART fara FAILED, replicarea se reia singura.

Reparatia de fond intra in Tier 1: eno1 exista si e functional, doar ca nu are
cablu (Link detected: no). Adaptorul USB e cauza a doua incidente pe nodul asta.
Am scris si ordinea operatiilor, pentru ca inversata te lasa fara retea cu drum
pana la nod.

Prima rulare reala a scriptului a scos la iveala trei defecte ale lui, toate
reparate aici:

- tiparele de semnatura hardware prindeau linii normale de boot ("Registered
  thermal governor", "NMI watchdog: Enabled", "EDAC MC: Ver: 3.0.0") si produceau
  un verdict de defect hardware care contrazicea concluzia corecta din acelasi
  bilant. Strans tiparele si filtrat prin -p warning; verificat pe nod: 0
  potriviri.
- LRM idle era raportat ca "stare neclara". E starea normala a unui nod fara
  servicii HA - iar scriptul spune acum explicit ca idle inseamna watchdog
  nearmat, adica exact motivul pentru care caderea de la 17:26 nu s-a auto-reparat.
- Tailscale era raportat [ok] desi e delogat: systemctl is-active zice active, dar
  tailscale status zice "Logged out". De aici si cele 27 de zile de offline.

Consemnat si raspunsul la intrebarea cu magic packet, cu MAC-urile ambelor
interfete, ca sa nu se reia: WoL nu ar fi ajutat oricum, masina nu era oprita.
Dupa mutarea pe eno1 devine insa realmente utilizabil.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VAEUqrv26jCM5KwAPtkHb8
This commit is contained in:
Marius
2026-08-28 09:55:10 +03:00
parent c67e7d8361
commit 5e31d975df
4 changed files with 169 additions and 57 deletions

View File

@@ -67,8 +67,18 @@ $IncidentStart = '2026-08-27 13:20' # boot-ul de dupa oprirea planificata
# Tipare de eroare hardware in jurnalul kernel. Daca NICIUNUL nu apare, verdictul
# inclina spre alimentare (masina nu apuca sa scrie nimic inainte sa dispara).
$TipareHw = 'mce|machine check|hardware error|thermal|temperature above|critical temp|' +
'nmi|kernel panic|oops|BUG:|edac|pcieport.*error|ATA bus error|I/O error'
#
# Tiparele sunt deliberat STRANSE. Prima versiune cauta 'thermal', 'nmi', 'edac',
# 'BUG:' si a raportat fals pozitiv la rularea din 28.08: liniile normale de boot
# ("Registered thermal governor", "NMI watchdog: Enabled", "EDAC MC: Ver: 3.0.0",
# "DPC: error containment capabilities") au declansat un verdict de defect hardware
# care contrazicea concluzia corecta. Un fals pozitiv aici nu e zgomot inofensiv -
# trimite pe pista gresita exact cand trebuie luata o decizie.
$TipareHw = 'Machine Check|mce: |Hardware Error|Uncorrected error|' +
'temperature above threshold|critical temperature|' +
'Kernel panic|Oops: |watchdog: BUG: soft lockup|' +
'EDAC.*(CE|UE) .*error|AER: .*error|Buffer I/O error|' +
'blk_update_request.*I/O error|ATA bus error'
$ReplJobs = 9 # 9 job-uri de replicare au pveelite ca tinta
@@ -241,14 +251,16 @@ if ($usbEv) {
# Cautarea tintita de semnaturi hardware, peste toate boot-urile de ieri.
Write-Host ""
Write-Info "--- semnaturi hardware in jurnal (MCE / termic / panic / EDAC) ---"
# -p warning taie zgomotul de boot inainte de a ajunge la grep: mesajele de
# inregistrare a guvernatorilor termici, EDAC si NMI sunt de nivel info.
$hw = Invoke-Node -Node pveelite -Command `
"journalctl --since '$IncidentStart' --no-pager | grep -iE '$TipareHw' | tail -25"
"journalctl --since '$IncidentStart' -p warning --no-pager | grep -E '$TipareHw' | tail -25"
$verdictHw = $false
if ($hw) {
Write-Bad "GASIT - nodul a lasat urme de eroare hardware:"
$hw | ForEach-Object { Write-Host " $_" -ForegroundColor Red }
Add-Rezultat 'Cauza caderii' 'bad' 'semnaturi hardware in jurnal - vezi liniile de mai sus'
Add-Rezultat 'Semnaturi hardware' 'bad' 'erori hardware in jurnal - vezi liniile de mai sus'
$verdictHw = $true
} else {
Write-Info "niciun MCE, eroare termica, panic sau EDAC in jurnal"
@@ -354,6 +366,16 @@ $ha | ForEach-Object { Write-Info $_ }
if ($ha -match 'lrm pveelite \(active') {
Write-Ok "LRM pveelite activ"
Add-Rezultat 'HA' 'ok' 'LRM activ'
} elseif ($ha -match 'lrm pveelite \(idle') {
# 'idle' e starea normala pentru un nod fara servicii HA asignate - si e
# exact cazul lui pveelite dupa ce fence-ul a mutat vm:109 pe pvemini.
# ATENTIE: cu LRM idle, watchdog-ul NU e armat. La 16:01 watchdog-ul a
# repornit nodul si i-a readus reteaua; la 17:26, fara el, nodul a ramas
# pornit si fara retea pana dimineata.
Write-Ok "LRM pveelite idle - normal, nodul nu are servicii HA asignate"
Write-Info "Consecinta: watchdog-ul nu e armat, deci o cadere de retea nu se"
Write-Info "mai auto-repara prin reboot, cum s-a intamplat la 16:01."
Add-Rezultat 'HA' 'ok' 'LRM idle (fara servicii asignate) - watchdog nearmat'
} elseif ($ha -match 'lrm pveelite.*old timestamp') {
Write-Warn "LRM pveelite inca 'dead' - poate dura un minut dupa boot; reverifica"
Add-Rezultat 'HA' 'warn' "LRM inca 'old timestamp'"
@@ -406,8 +428,16 @@ Write-Info "viitoare a nodului cere din nou deplasare fizica."
$ts = Invoke-Node -Node pveelite -Command 'systemctl is-active tailscaled 2>/dev/null; tailscale status 2>&1 | head -3'
$ts | ForEach-Object { Write-Info $_ }
if ($ts -match '^active') {
Write-Ok "tailscaled activ"
if ($ts -match 'Logged out|Stopped') {
# Capcana: serviciul poate fi 'active' si totusi inutilizabil. Exact asa arata
# pveelite la 28.08 - tailscaled pornit, dar delogat, ceea ce explica cele 27
# de zile de "offline". A verifica doar systemctl is-active da un fals OK.
Write-Bad "tailscaled ruleaza, dar e DELOGAT - nu exista acces out-of-band"
Write-Info "Reautentificare (cere deschiderea link-ului afisat intr-un browser):"
Write-Info " ssh root@$($NodeIp.pveelite) 'tailscale up'"
Add-Rezultat 'Tailscale' 'bad' 'delogat - fara acces out-of-band'
} elseif ($ts -match '^active') {
Write-Ok "tailscaled activ si autentificat"
Add-Rezultat 'Tailscale' 'ok' 'activ'
} else {
Write-Warn "tailscaled NU e activ - reactiveaza-l acum:"