Newer Older
c299213 3 months ago History
103 lines | 4.39kb
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
Bogdan Timofte authored 3 months ago
22
- preflight cleanup limitat la storages locale `dir`, astfel incat un NFS remote stale sa nu blocheze `pgs suspend`
Bogdan Timofte authored 3 months ago
23

            
24
## Layout proiect
25

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

            
33
## Locatii instalate pe host
34

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

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

            
45
## Flux rapid
46

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

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

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

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

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

            
65
## Instalare si uninstall
66

            
67
Instalare:
68

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

            
74
Uninstall:
75

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

            
81
Sau direct pe host:
82

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

            
87
## Observatii operationale
88

            
89
- proiectul nu instaleaza configuratie persistenta proprie in `/etc`
90
- proiectul nu instaleaza unitati systemd active; cele vechi sunt doar artefacte istorice si sunt eliminate la install/uninstall
91
- dupa un `resume` complet reusit, state file-ul este sters
92
- daca `resume` are erori, state file-ul este pastrat pentru retry
93
- `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
Bogdan Timofte authored 3 months ago
94
- `cleanup` si preflight-ul din `suspend` scaneaza doar storages locale de tip `dir`; storages remote (de exemplu NFS) sunt sarite intentionat pentru a evita blocarea mentenantei cand un mount remote este stale
Bogdan Timofte authored 3 months ago
95
- un nou `suspend` peste un state file existent face merge, nu reseteaza lista de guest-uri de restaurat
96
- state file-ul retine si `suspend_volume`/`suspend_file_date` per VM pentru a detecta guest-uri alterate dupa salvarea state-ului
97

            
98
## Debug rapid
99

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