pgs cleanup to scan image storages for orphan/stale vm-*-state-suspend-YYYY-MM-DD.raw volumes and remove them safelybin/pgs now requires lock: suspended, vmstate:, and a resolvable backing saved-state volumevmstate: metadata, and orphaned saved-state volumes on storagepgs suspend now runs suspend-artifact cleanup as a preflight, reducing same-day collisions with stale state-suspend volumesvm-*-state-cp*.raw checkpoint files and only targets vm-*-state-suspend-YYYY-MM-DD.rawpgs suspend runs now merge with the existing state file instead of discarding prior to_resume intentvm_details.suspend_volume and vm_details.suspend_file_date, and resume skips auto-restore when a VM's suspend artifact changed after the state was saveddir storages; remote storages such as NFS are skipped so planned maintenance cannot block in kernel I/O wait on a stale mount [ISSUE-2026-002]xdev paths for uninstall, documentation, and runtime statescripts/install.sh and scripts/uninstall.sh and reduced setup.sh to a local/remote wrapperbin/pgs to migrate legacy state from /var/lib/pve-manager/pgs-state.json to /var/lib/xdev/pve-guests-state/pgs-state.jsonbin/pgs as the canonical executable and removed the duplicate top-level pgs filesystemd/ artifacts as legacy reference material instead of active install targetsct_to_start array in state JSON for CT restorationload_ct_info() function using single pct list callshutdown_ct() function with 120s timeout for graceful shutdownstart_ct() function for post-maintenance startupct_to_start arraypct list column parsing (Status/Lock/Name column order)pct list outputload_state() outputting log messages to stdout, corrupting JSON parsing[""] instead of [])paused statusqm list call instead of per-VM callsqm callsqm list| Operation | v1.0 | v1.1 | Improvement |
|---|---|---|---|
| Scan 30 VMs | ~180s | ~2.5s | 72x faster |
| System calls | Per-VM qm calls | Single qm list + file I/O | Drastically reduced |
Tested on:
- Proxmox VE 8.x with 30+ VMs and CTs
- Mixed VM configurations (4GB-16GB RAM)
- LXC containers with running services
- Storage: local-dir, NFS mount points
- Planned reboot validation on baobab: shutdown-to-ICMP-loss improved from ~106s to ~15s once NFS over Thunderbolt stopped losing transport before unmount