|
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
|
```
|