Newer Older
f16725e 3 months ago History
101 lines | 4.063kb
Bogdan Timofte authored 3 months ago
1
# PGS
2

            
3
`pve-guests-state` este utilitarul manual pentru suspendarea si restaurarea guest-urilor Proxmox inainte si dupa lucrari de mentenanta.
4

            
5
Modelul suportat este deliberat simplu:
6
- `pgs suspend` se ruleaza manual inainte de mentenanta
7
- `pgs resume` se ruleaza manual dupa revenirea stabila a clusterului
8
- `pgs cleanup` poate fi rulat manual pentru audit sau cleanup al artefactelor stale de suspend
9

            
10
Automatizarea prin systemd pentru shutdown si boot a fost abandonata intentionat. Contextul complet este in [docs/DECISIONS.md](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/docs/DECISIONS.md).
11

            
12
## Capabilitati
13

            
14
- suspend to disk pentru VM-uri QEMU care ruleaza
15
- graceful shutdown pentru containere LXC care ruleaza
16
- resume pentru VM-urile salvate in state
17
- start pentru containerele salvate in state
18
- cleanup pentru stale suspend images
19
- cleanup pentru volume orphan `vm-*-state-suspend-YYYY-MM-DD.raw`
20
- retry pentru anumite erori legate de quorum
21
- dry-run pentru verificare fara efecte
22

            
23
## Layout proiect
24

            
25
- [bin/pgs](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/bin/pgs) - comanda principala
26
- [scripts/install.sh](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/scripts/install.sh) - instalare locala pe host
27
- [scripts/uninstall.sh](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/scripts/uninstall.sh) - uninstall canonic
28
- [setup.sh](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/setup.sh) - wrapper local/remote
29
- [docs/TECHNICAL.md](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/docs/TECHNICAL.md) - detalii tehnice
30
- [systemd/README.md](/Users/bogdan/Documents/Workspaces/Xdev/Madagascar/cluster/projects/pve-guests-state/systemd/README.md) - statusul unitatilor legacy
31

            
32
## Locatii instalate pe host
33

            
34
- comanda operatorului: `/usr/local/sbin/pgs`
35
- uninstall canonic: `/usr/local/lib/xdev/pve-guests-state/uninstall.sh`
36
- wrapper optional pentru uninstall: `/usr/local/sbin/xdev-pve-guests-state-uninstall`
37
- documentatie instalata: `/usr/local/share/doc/xdev/pve-guests-state`
38
- state runtime: `/var/lib/xdev/pve-guests-state/pgs-state.json`
39

            
40
Compatibilitate:
41
- la primul run, daca exista vechiul state file `/var/lib/pve-manager/pgs-state.json`, acesta este migrat automat in locatia noua
42
- installerul si uninstallerul curata si artefactele istorice `pve-reboot-manager.sh` si `pve-guest-state.sh`
43

            
44
## Flux rapid
45

            
46
```bash
47
# instalare locala
48
sudo ./setup.sh --local
49

            
50
# test
51
/usr/local/sbin/pgs suspend --dry-run -v
52
/usr/local/sbin/pgs cleanup --dry-run -v
53

            
54
# suspend inainte de mentenanta
55
/usr/local/sbin/pgs suspend -v
56

            
57
# resume dupa revenirea clusterului
58
/usr/local/sbin/pgs resume -v
59

            
60
# cleanup manual al artefactelor stale/orphan
61
/usr/local/sbin/pgs cleanup -v
62
```
63

            
64
## Instalare si uninstall
65

            
66
Instalare:
67

            
68
```bash
69
sudo ./setup.sh --local
70
sudo ./setup.sh <node>
71
```
72

            
73
Uninstall:
74

            
75
```bash
76
sudo ./setup.sh --local --uninstall
77
sudo ./setup.sh --uninstall <node>
78
```
79

            
80
Sau direct pe host:
81

            
82
```bash
83
sudo /usr/local/lib/xdev/pve-guests-state/uninstall.sh
84
```
85

            
86
## Observatii operationale
87

            
88
- proiectul nu instaleaza configuratie persistenta proprie in `/etc`
89
- proiectul nu instaleaza unitati systemd active; cele vechi sunt doar artefacte istorice si sunt eliminate la install/uninstall
90
- dupa un `resume` complet reusit, state file-ul este sters
91
- daca `resume` are erori, state file-ul este pastrat pentru retry
92
- `cleanup` si preflight-ul din `suspend` ating doar fisiere `vm-*-state-suspend-YYYY-MM-DD.raw`; fisiere `vm-*-state-cp*.raw` sau alte variante raman neatinse
93
- un nou `suspend` peste un state file existent face merge, nu reseteaza lista de guest-uri de restaurat
94
- state file-ul retine si `suspend_volume`/`suspend_file_date` per VM pentru a detecta guest-uri alterate dupa salvarea state-ului
95

            
96
## Debug rapid
97

            
98
```bash
99
journalctl -t pgs -n 50
100
cat /var/lib/xdev/pve-guests-state/pgs-state.json
101
```