Reorganize proxmox documentation into subdirectories per LXC/VM

- Create cluster/ for Proxmox cluster infrastructure (SSH guide, HA monitor, UPS)
- Create lxc108-oracle/ for Oracle Database documentation and scripts
- Create vm201-windows/ for Windows 11 VM docs and SSL certificate scripts
- Add SSL certificate monitoring scripts (check-ssl-certificates.ps1, monitor-ssl-certificates.sh)
- Remove archived VM107 references (decommissioned)
- Update all cross-references between files
- Update main README.md with new structure and navigation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-01-27 17:02:49 +02:00
parent 1da4c2347c
commit 4d51d5b2d2
33 changed files with 954 additions and 593 deletions

View File

@@ -0,0 +1,259 @@
# Certificat Let's Encrypt pentru IIS - Ghid Rapid
## Instalare Win-ACME
```powershell
# Download și instalare
Invoke-WebRequest -Uri "https://github.com/win-acme/win-acme/releases/download/v2.2.9.1701/win-acme.v2.2.9.1701.x64.pluggable.zip" -OutFile "$env:TEMP\win-acme.zip"
Expand-Archive -Path "$env:TEMP\win-acme.zip" -DestinationPath "C:\Tools\win-acme" -Force
```
## Prerequisite IIS
### Verificare Site ID-uri
```powershell
Import-Module WebAdministration
Get-Website | Select-Object ID, Name, State, @{N='Bindings';E={$_.Bindings.Collection.bindingInformation}}
```
### Adaugă Binding-uri pentru Domeniu
```powershell
# Exemplu pentru roa.romfast.ro pe Default Web Site
New-WebBinding -Name "Default Web Site" -Protocol http -Port 80 -HostHeader "roa.romfast.ro"
New-WebBinding -Name "Default Web Site" -Protocol https -Port 443 -HostHeader "roa.romfast.ro"
```
## Generare Certificate
### Metoda 1: Comenzi PowerShell (Automat)
```powershell
cd C:\Tools\win-acme
# Pentru fiecare site (înlocuiește Site ID și email)
.\wacs.exe --source iis --siteid 1 --accepttos --emailaddress your@email.com
.\wacs.exe --source iis --siteid 2 --accepttos --emailaddress your@email.com
.\wacs.exe --source iis --siteid 3 --accepttos --emailaddress your@email.com
```
### Metoda 2: Mod Interactiv
```powershell
cd C:\Tools\win-acme
.\wacs.exe
# În meniu:
# N - Create certificate (simple for IIS)
# Selectează site-ul
# Confirmă binding-urile
# yes - Accept ToS
# Enter email
```
## Configurare Binding-uri IIS cu SNI
### Important: SNI OBLIGATORIU pentru Multiple Certificate pe Același IP
**GUI - IIS Manager:**
1. Deschide IIS Manager (`inetmgr`)
2. Pentru fiecare site:
- Site → **Bindings** → Selectează **https****Edit**
- ☑️ **Bifează "Require Server Name Indication"**
- Selectează **certificatul corect** pentru site
- **OK**
3. Restart IIS: `iisreset`
**PowerShell:**
```powershell
Import-Module WebAdministration
# Exemplu pentru un site
$siteName = "Dokploy"
$hostHeader = "dokploy.romfast.ro"
# Găsește certificatul
$cert = Get-ChildItem Cert:\LocalMachine\My | Where-Object {
$_.Subject -like "*$hostHeader*" -and $_.NotAfter -gt (Get-Date).AddDays(60)
} | Select-Object -First 1
# Șterge binding vechi și creează cu SNI (SslFlags = 1)
Remove-WebBinding -Name $siteName -Protocol https -HostHeader $hostHeader -ErrorAction SilentlyContinue
New-WebBinding -Name $siteName -Protocol https -Port 443 -HostHeader $hostHeader -SslFlags 1
# Asociază certificatul
$binding = Get-WebBinding -Name $siteName -Protocol https -HostHeader $hostHeader
$binding.AddSslCertificate($cert.Thumbprint, "My")
# Restart IIS
iisreset
```
## Verificare
### Listare Certificate Gestionate
```powershell
cd C:\Tools\win-acme
.\wacs.exe --list
```
### Verificare Certificate în Browser
```bash
# Din WSL sau Linux
echo | openssl s_client -connect domain.ro:443 -servername domain.ro 2>/dev/null | openssl x509 -noout -dates -subject
```
### Verificare Task Scheduler
```powershell
Get-ScheduledTask | Where-Object {$_.TaskName -like "*acme*"}
```
### Verificare Certificate IIS
```powershell
Get-ChildItem Cert:\LocalMachine\My | Where-Object {
$_.Issuer -like "*Let's Encrypt*" -and $_.NotAfter -gt (Get-Date)
} | Select-Object Subject, NotAfter, Thumbprint
```
## Reînnoire
### Automată
- Task Scheduler verifică zilnic
- Reînnoiește automat cu 30 zile înainte de expirare
### Manuală
```powershell
cd C:\Tools\win-acme
.\wacs.exe --renew --force
iisreset
```
## Troubleshooting
### Certificat Vechi Încă Servit
```powershell
# Verifică SNI
Get-WebBinding | Where-Object {$_.Protocol -eq "https"} | Select-Object @{N='Site';E={$_.ItemXPath -replace '.*name=''([^'']+)''.*','$1'}}, bindingInformation, @{N='SNI';E={($_.sslFlags -band 1) -eq 1}}
# Forțează reinstalare
cd C:\Tools\win-acme
.\wacs.exe --renew --force
iisreset
```
### Validare HTTP-01 Eșuează
- Verifică că portul 80 este accesibil din internet
- Verifică că DNS pointează corect
- Verifică că URL Rewrite nu blochează `/.well-known/acme-challenge/*`
### Certificate Nu Se Asociază Automat
Folosește scriptul: `configure-iis-sni.ps1`
## Structură Site-uri IIS
| Site ID | Nume | Hostname | Binding HTTPS | SNI |
|---------|--------------------|-----------------------|------------------------|----------|
| 1 | Default Web Site | roa.romfast.ro | *:443:roa.romfast.ro | ☑️ Activ |
| 2 | Dokploy | dokploy.romfast.ro | *:443:dokploy.romfast.ro | ☑️ Activ |
| 3 | Gitea | gitea.romfast.ro | *:443:gitea.romfast.ro | ☑️ Activ |
## Scripturi Utile
### Script Verificare/Reînnoire Certificate (PowerShell)
**Locație repo:** `../scripts/check-ssl-certificates.ps1`
**Locație VM 201:** `D:\kit\ssl\check-ssl-certificates.ps1`
```powershell
# Verificare manuală
D:\kit\ssl\check-ssl-certificates.ps1 -Verbose
# Forțare reinstalare toate certificatele
D:\kit\ssl\check-ssl-certificates.ps1 -Force -Verbose
```
### Script Monitorizare Certificate (Bash - Proxmox)
**Locație repo:** `../scripts/monitor-ssl-certificates.sh`
**Locație Proxmox:** `/opt/scripts/monitor-ssl-certificates.sh`
```bash
# Verificare manuală
/opt/scripts/monitor-ssl-certificates.sh
# Verificare log
tail -50 /var/log/ssl-monitor.log
```
## Comenzi Rapide
```powershell
# Instalare
Expand-Archive win-acme.zip -DestinationPath C:\Tools\win-acme
# Generare certificate
cd C:\Tools\win-acme
.\wacs.exe --source iis --siteid X --accepttos --emailaddress email@domain.com
# Verificare
.\wacs.exe --list
# Reînnoire
.\wacs.exe --renew --force
# Restart IIS
iisreset
```
## Monitorizare Automată Certificate
### Problema Cunoscută
Win-acme poate reînnoi certificatele, dar IIS uneori nu aplică noile certificate pe binding-uri.
Acest lucru cauzează servirea certificatelor expirate chiar dacă cele noi sunt în Certificate Store.
### Soluția: Scripturi de Monitorizare
#### 1. Script PowerShell pe VM 201
**Locație:** `D:\kit\ssl\check-ssl-certificates.ps1`
**Task Scheduler:** "SSL Certificate Check" - rulează zilnic la 07:00
```powershell
# Verificare manuală
D:\kit\ssl\check-ssl-certificates.ps1 -Verbose
# Forțare reinstalare toate certificatele
D:\kit\ssl\check-ssl-certificates.ps1 -Force -Verbose
```
#### 2. Script Bash pe Proxmox (pvemini)
**Locație:** `/opt/scripts/monitor-ssl-certificates.sh`
**Cron:** Zilnic la 08:00
```bash
# Verificare manuală
/opt/scripts/monitor-ssl-certificates.sh
# Verificare log
tail -50 /var/log/ssl-monitor.log
```
### Ce Fac Scripturile
- Verifică zilele rămase pentru fiecare certificat
- Dacă < 14 zile: forțează reinstalare cu `wacs.exe --force`
- Restart IIS după reinstalare
- Trimite alertă email dacă există probleme
### Verificare Task Schedulers
```powershell
# Pe VM 201
Get-ScheduledTask | Where-Object {$_.TaskName -like "*SSL*" -or $_.TaskName -like "*acme*"}
```
```bash
# Pe Proxmox
grep ssl /etc/crontab
```
## Note Importante
- **SNI este OBLIGATORIU** pentru multiple certificate pe același IP:port
- Certificatele expiră la **90 zile**
- Task Scheduler reînnoiește automat cu **30 zile** înainte
- Fiecare domeniu trebuie fie **accesibil pe port 80** din internet pentru validare HTTP-01
- DNS trebuie pointeze corect către IP-ul public
- **Monitorizarea duală** (Windows + Proxmox) asigură redundanță

View File

@@ -0,0 +1,394 @@
# Troubleshooting: VM 201 Locked & Backup-NFS Unknown
**Data:** 2025-10-08
**Noduri afectate:** pvemini (10.0.20.201)
**Resurse afectate:** VM 201 (roacentral), Storage backup-nfs
---
## Problema 1: VM 201 - Status Running dar HA Error
### Simptome
- VM 201 (Windows 11) înghețat
- GUI Proxmox arăta: **running** dar cu **HA error**
- Încercări de reboot/stop din GUI au eșuat
- VM nu răspundea la comenzi
### Diagnostic
#### 1. Verificare status VM
```bash
ssh root@10.0.20.201 "qm status 201"
# Output: status: running
```
#### 2. Verificare status HA
```bash
ssh root@10.0.20.201 "ha-manager status"
# Output: service vm:201 (pvemini, error)
```
#### 3. Verificare configurație VM
```bash
ssh root@10.0.20.201 "qm config 201"
# Output: lock: backup
```
**Cauză identificată:** Lock de backup rămas activ în configurație, probabil de la un job de backup întrerupt.
#### 4. Verificare log-uri HA
```bash
ssh root@10.0.20.201 "journalctl -u pve-ha-lrm --since '5 minutes ago' --no-pager | grep -i '201\|error'"
```
**Output relevant:**
```
Oct 08 11:18:46 pvemini pve-ha-lrm: can't lock file '/var/lock/qemu-server/lock-201.conf' - got timeout
Oct 08 11:18:46 pvemini pve-ha-lrm: unable to stop service vm:201 (still running)
Oct 08 11:18:56 pvemini pve-ha-lrm: service vm:201 is in an error state and needs manual intervention
```
#### 5. Verificare proces KVM
```bash
ssh root@10.0.20.201 "ps aux | grep 'qm\|kvm' | grep 201"
```
**Rezultat:** Procesul KVM (PID 3628) rula de 2 zile dar era înghețat.
### Rezolvare VM 201
#### Pas 1: Unlock VM
```bash
ssh root@10.0.20.201 "qm unlock 201"
# Success - lock-ul a fost eliminat
```
#### Pas 2: Încercare stop normal (a eșuat)
```bash
ssh root@10.0.20.201 "qm stop 201"
# Error: service 'vm:201' in error state, must be disabled and fixed first
```
#### Pas 3: Remove VM din HA management
```bash
ssh root@10.0.20.201 "ha-manager remove vm:201"
# Success - VM eliminat din HA
```
#### Pas 4: Force stop VM
```bash
ssh root@10.0.20.201 "qm stop 201"
# Output: VM quit/powerdown failed - terminating now with SIGTERM
# VM still running - terminating now with SIGKILL
```
#### Pas 5: Verificare stop
```bash
ssh root@10.0.20.201 "qm status 201"
# Output: status: stopped
```
#### Pas 6: Start VM
```bash
ssh root@10.0.20.201 "qm start 201"
ssh root@10.0.20.201 "sleep 5 && qm status 201"
# Output: status: running
```
#### Pas 7: Re-add în HA
```bash
ssh root@10.0.20.201 "ha-manager add vm:201"
ssh root@10.0.20.201 "sleep 10 && ha-manager status | grep 201"
# Output: service vm:201 (pvemini, started)
```
**Rezultat:** ✅ VM 201 funcțional și re-integrat în HA
---
## Problema 2: Storage backup-nfs - Status Unknown
### Simptome
- Storage backup-nfs apărea ca **unknown** în GUI
- Toate comenzile care accesau `/mnt/pve/backup-nfs` înghețau
- Timeout-uri la operații SSH pe pvemini
- NFS mount exista dar era blocat
### Diagnostic
#### 1. Verificare status storage
```bash
ssh root@10.0.20.201 "pvesm status | grep backup"
```
**Output:**
```
backup dir active 1921724696 287855936 1536176700 14.98%
backup-nfs nfs inactive 0 0 0 0.00%
backup-ssd dir disabled 0 0 0 N/A
got timeout
unable to activate storage 'backup-nfs' - directory '/mnt/pve/backup-nfs' does not exist or is unreachable
```
#### 2. Verificare configurație storage
```bash
ssh root@10.0.20.201 "cat /etc/pve/storage.cfg | grep -A5 backup-nfs"
```
**Output:**
```
nfs: backup-nfs
export /mnt/backup
path /mnt/pve/backup-nfs
server 10.0.20.201
content rootdir,snippets,images,iso,import,vztmpl,backup
```
#### 3. Verificare mount point (TIMEOUT)
```bash
ssh root@10.0.20.201 "ls -ld /mnt/pve/backup-nfs"
# Timeout după 2 minute - NFS blocat complet
```
#### 4. Verificare dacă este montat
```bash
ssh root@10.0.20.201 "mount | grep backup-nfs"
```
**Output:**
```
10.0.20.201:/mnt/backup on /mnt/pve/backup-nfs type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.20.201,local_lock=none,addr=10.0.20.201)
```
**Cauză identificată:** NFS server blocat pe pvemini - mount exista dar era complet non-responsive.
#### 5. Verificare status servicii NFS
```bash
ssh root@10.0.20.201 "systemctl status nfs-server"
# Active: active (exited) - dar non-functional
```
#### 6. Încercări de remediere (toate au eșuat cu timeout)
```bash
# Încercare unmount forțat
ssh root@10.0.20.201 "umount -f /mnt/pve/backup-nfs"
# device is busy
# Încercare restart servicii NFS
ssh root@10.0.20.201 "systemctl restart nfs-server"
# Timeout după 30s
# Încercare kill procese NFS
ssh root@10.0.20.201 "pkill -9 nfs"
# Timeout după 15s
```
### Rezolvare Backup-NFS
#### Pas 1: Dezactivare storage din alt nod
```bash
ssh root@10.0.20.200 "pvesm set backup-nfs --disable 1"
ssh root@10.0.20.200 "pvesm status | grep backup"
```
**Output:**
```
backup dir disabled
backup-nfs nfs disabled
backup-ssd dir active
```
#### Pas 2: Force reboot pvemini
```bash
# Încercare reboot normal (blocat)
ssh root@10.0.20.201 "reboot" &
# Nu a funcționat
# Force reboot via sysrq
ssh root@10.0.20.201 "echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger" &
# Output: "System is going down" - SUCCESS
```
#### Pas 3: Monitorizare reboot
```bash
for i in {1..60}; do
sleep 2
ping -c 1 -W 1 10.0.20.201 >/dev/null 2>&1 && echo "pvemini is back online!" && break || echo "Waiting... ($i/60)"
done
# Output: pvemini is back online! (după ~6 secunde)
```
#### Pas 4: Verificare după reboot
```bash
# Așteptare servicii Proxmox
sleep 15
# Verificare status storage
ssh root@10.0.20.201 "pvesm status | grep backup-nfs"
# Output: backup-nfs nfs disabled
```
#### Pas 5: Re-activare storage
```bash
ssh root@10.0.20.201 "pvesm set backup-nfs --disable 0"
ssh root@10.0.20.201 "pvesm status | grep backup"
```
**Output:**
```
backup dir active 1921724696 287855936 1536176700 14.98%
backup-nfs nfs inactive 0 0 0 0.00%
```
#### Pas 6: Verificare mount
```bash
ssh root@10.0.20.201 "mount | grep backup-nfs"
```
**Output:**
```
10.0.20.201:/mnt/backup on /mnt/pve/backup-nfs type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576)
```
#### Pas 7: Verificare accesibilitate
```bash
ssh root@10.0.20.201 "df -h /mnt/pve/backup-nfs"
```
**Output:**
```
Filesystem Size Used Avail Use% Mounted on
10.0.20.201:/mnt/backup 1.8T 275G 1.5T 16% /mnt/pve/backup-nfs
```
#### Pas 8: Restart pvestatd pentru refresh
```bash
ssh root@10.0.20.201 "systemctl restart pvestatd"
ssh root@10.0.20.201 "sleep 5 && pvesm status | grep backup-nfs"
```
**Output final:**
```
backup-nfs nfs active 1921725440 287856640 1536177152 14.98%
```
**Rezultat:** ✅ Storage backup-nfs funcțional și active
---
## Observații Suplimentare
### VM/LXC nu au pornit automat după reboot
Deși toate containerele și VM-urile cu `onboot: 1` nu au pornit imediat după reboot-ul forțat, acestea s-au recuperat automat după ce:
- Cluster quorum s-a re-stabilit (3/3 noduri)
- HA manager și-a recuperat starea
- Storage-urile au devenit disponibile
HA a fost conservativ după reboot-ul forțat, așteptând confirmarea stabilității cluster-ului înainte de a porni serviciile.
---
## Lecții Învățate
### Despre Lock-uri VM
1. Lock-urile de backup pot rămâne active dacă job-urile de backup sunt întrerupte brusc
2. `qm unlock <VMID>` rezolvă lock-uri simple
3. Pentru VM-uri în HA error state, este necesar să fie remove din HA înainte de intervenții
### Despre NFS pe Proxmox
1. **Evită self-mount NFS** - pvemini montează NFS de pe el însuși (10.0.20.201:/mnt/backup → 10.0.20.201:/mnt/pve/backup-nfs)
2. Această configurație poate cauza deadlock-uri când NFS server-ul sau client-ul au probleme
3. **Recomandare:** Mută NFS server-ul pe un nod dedicat sau NAS separate
### Comenzi Utile pentru Diagnostic
#### Verificare HA status
```bash
ha-manager status # Overview complet HA
ha-manager config # Configurație HA resources
cat /etc/pve/ha/resources.cfg # Fișier configurație HA
journalctl -u pve-ha-lrm -f # Log-uri HA Local Resource Manager
```
#### Verificare Lock-uri VM
```bash
qm config <VMID> | grep lock # Verifică lock în config
ls -lh /var/lock/qemu-server/ # Lock files pe disk
qm unlock <VMID> # Remove lock
qm stop <VMID> --skiplock # Stop forțat ignorând lock
```
#### Verificare NFS
```bash
showmount -e <IP> # Export-uri disponibile
pvesm nfsscan <IP> # Scan NFS via Proxmox
mount | grep nfs # Mount-uri NFS active
df -h <mount_point> # Test accesibilitate mount
systemctl status nfs-server # Status NFS server
systemctl status nfs-client.target # Status NFS client
```
#### Force Reboot când SSH-ul este blocat
```bash
# Via sysrq (cel mai safe force reboot)
ssh root@<IP> "echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger" &
# Via IPMI/iLO (dacă disponibil)
ipmitool -I lanplus -H <IPMI_IP> -U <user> -P <pass> power reset
```
---
## Preventie
### Pentru VM Lock Issues
1. **Monitorizează job-urile de backup** - verifică că se termină corect
2. **Test backup recovery** - periodic test restore pentru validare
3. **Configurează timeout-uri** adecvate pentru backup-uri mari
4. **Enable HA doar pentru VM-uri critice** - nu toate VM-urile necesită HA
### Pentru Storage NFS
1. **Separă NFS server de client** - nu monta NFS de pe același host
2. **Monitorizează NFS timeouts** în log-uri
3. **Configurează soft mount** în loc de hard mount pentru non-critical storage
4. **Test periodic** accesibilitatea storage-urilor NFS
### Monitorizare Preventivă
```bash
# Script verificare lock-uri VM
for vm in $(qm list | awk 'NR>1 {print $1}'); do
if qm config $vm | grep -q "^lock:"; then
echo "WARNING: VM $vm has lock: $(qm config $vm | grep '^lock:')"
fi
done
# Script verificare NFS health
for nfs in $(pvesm status | grep nfs | awk '{print $1}'); do
if ! pvesm list $nfs &>/dev/null; then
echo "ERROR: Storage $nfs not accessible"
fi
done
```
---
## Rezumat Comenzi Executate
### Rezolvare VM 201
```bash
ssh root@10.0.20.201 "qm unlock 201"
ssh root@10.0.20.201 "ha-manager remove vm:201"
ssh root@10.0.20.201 "qm stop 201"
ssh root@10.0.20.201 "qm start 201"
ssh root@10.0.20.201 "ha-manager add vm:201"
```
### Rezolvare backup-nfs
```bash
ssh root@10.0.20.200 "pvesm set backup-nfs --disable 1"
ssh root@10.0.20.201 "echo 1 > /proc/sys/kernel/sysrq && echo b > /proc/sysrq-trigger" &
# Așteptare reboot
ssh root@10.0.20.201 "pvesm set backup-nfs --disable 0"
ssh root@10.0.20.201 "systemctl restart pvestatd"
```
**Timp total rezolvare:** ~15 minute (incluzând reboot-ul)

View File

@@ -0,0 +1,202 @@
# VM 201 - Troubleshooting Pană de Curent (2026-01-11)
## Rezumat Incident
**Data:** 2026-01-11
**Problemă:** VM 201 nu pornea după o pană de curent
**Cauză root:** HA blocat în starea "migrate" din cauza dependențelor de storage indisponibil
**Rezoluție:** Migrare manuală, eliminare HA, configurare replicare
---
## Cronologie Incident
### 1. Stare Inițială
- VM 201 era configurat pe **pveelite** (migrat anterior de HA)
- Replicare configurată: pveelite → pve1, pvemini
- HA activ în `ha-group-main` (prioritate: pvemini:100 > pveelite:50)
### 2. Ce s-a întâmplat la pana de curent
1. pvemini a căzut
2. HA a încercat să migreze VM 201 pe pveelite
3. Migrarea a eșuat din cauza ISO atașat de pe storage `backup`
4. Când pvemini a revenit, HA a încercat să migreze înapoi
5. HA a rămas blocat în starea "migrate", reîncercând la fiecare 10 secunde
### 3. Erori întâlnite
```
storage 'backup' is not available on node 'pveelite'
migration aborted
```
---
## Probleme Identificate
| Problemă | Impact | Rezolvare |
|----------|--------|-----------|
| ISO atașat de pe storage local (`backup:iso/virtio-win-latest.iso`) | Blochează migrarea automată | Detașat ISO: `qm set 201 --ide1 none` |
| Snapshot-uri cu referințe la storage `backup` | Blochează migrarea | Șterse snapshot-uri |
| Replicare configurată invers | Discuri pe nod greșit | Recreat job-uri replicare |
| Clone ZFS (base-300) legat de discuri VM 201 | Blochează ștergerea | Promovat clone: `zfs promote` |
| HA cu failback automat | Încerca să mute înapoi VM-ul | Eliminat din HA |
---
## Pași de Rezolvare
### Pas 1: Diagnostic
```bash
# Verificare unde e VM-ul
find /etc/pve/nodes -name '201.conf'
# Verificare stare HA
ha-manager status | grep 201
# Verificare erori
ssh root@10.0.20.202 "journalctl -u pve-ha-lrm -n 50"
```
### Pas 2: Dezactivare HA temporar
```bash
ha-manager set vm:201 --state disabled
# Sau eliminare completă:
ha-manager remove vm:201
```
### Pas 3: Detașare ISO
```bash
qm set 201 --ide1 none
```
### Pas 4: Ștergere snapshot-uri cu referințe problematice
```bash
qm delsnapshot 201 Windows11VisualSVNROAUpdate
qm delsnapshot 201 Windows11Debloated
qm delsnapshot 201 Windows11ProaspatInstalat
```
### Pas 5: Ștergere job-uri replicare corupte
```bash
pvesr delete 201-0 --force
pvesr delete 201-1 --force
```
### Pas 6: Migrare manuală
```bash
qm migrate 201 pvemini
```
### Pas 7: Recreare job-uri replicare
```bash
pvesr create-local-job 201-0 pve1 --schedule '*/30' --comment 'central W11'
pvesr create-local-job 201-1 pveelite --schedule '*/30' --comment 'central W11'
```
### Pas 8: Curățare discuri vechi nefolosite
```bash
# Promovare clone (dacă există)
zfs promote rpool/data/base-300-disk-0
zfs promote rpool/data/base-300-disk-1
# Ștergere discuri vechi
zfs destroy -r rpool/data/vm-201-disk-0
zfs destroy -r rpool/data/vm-201-disk-2
```
---
## Configurație Finală
### VM 201
- **Nod:** pvemini (10.0.20.201)
- **IP:** 10.0.20.122
- **Discuri:** vm-201-disk-1 (EFI), vm-201-disk-3 (500GB)
### HA
- **Status:** ELIMINAT (control manual)
- **Motiv:** Evitare blocaje la migrare automată
### Replicare
- **201-0:** pvemini → pve1 (*/30)
- **201-1:** pvemini → pveelite (*/30)
---
## Lecții Învățate
### 1. NU atașa ISO-uri de pe storage local
Storage-ul `backup` este local pe pvemini și nu e disponibil pe alte noduri. Asta blochează migrarea.
**Soluție:** Detașează ISO-urile când nu sunt necesare:
```bash
qm set 201 --ide1 none --ide2 none
```
### 2. NU crea snapshot-uri cu ISO atașat
Snapshot-urile salvează referințele la storage, care blochează migrarea ulterioară.
### 3. Replicarea și HA sunt independente
- **Replicare (pvesr):** Copiază discurile ZFS între noduri
- **HA:** Gestionează pornirea/migrarea automată
Poți avea replicare fără HA.
### 4. `/etc/pve` este partajat în cluster
Chiar dacă un nod e offline, fișierele de configurare sunt accesibile de pe alte noduri prin pmxcfs.
### 5. Clone-urile ZFS blochează ștergerea
Dacă ai creat un VM template dintr-un snapshot, clone-ul trebuie promovat înainte de a șterge volumul părinte:
```bash
zfs promote rpool/data/base-XXX-disk-Y
```
---
## Procedură Failover Manual (Viitor)
### Când pvemini cade:
```bash
# De pe pveelite sau pve1:
mv /etc/pve/nodes/pvemini/qemu-server/201.conf /etc/pve/nodes/pveelite/qemu-server/201.conf
qm start 201
```
### Când pvemini revine (failback):
```bash
qm migrate 201 pvemini --online
```
---
## Comenzi Utile
```bash
# Status replicare
pvesr status | grep 201
# Forțare replicare imediată
pvesr schedule-now 201-0 && pvesr schedule-now 201-1
# Verificare discuri pe noduri
ssh root@10.0.20.201 "zfs list | grep vm-201"
ssh root@10.0.20.202 "zfs list | grep vm-201"
ssh root@10.0.20.200 "zfs list | grep vm-201"
# Verificare configurare VM
qm config 201 | grep -E 'disk|efidisk|virtio|ide'
```
---
## Referințe
- **Documentație VM 201:** `vm201-windows11.md`
- **Proxmox Replication:** https://pve.proxmox.com/wiki/Storage_Replication
- **Proxmox HA:** https://pve.proxmox.com/wiki/High_Availability
---
**Data rezolvare:** 2026-01-11
**Durată incident:** ~2 ore
**Autor:** Marius Mutu