Proxmox storage remediation — proposal¶
Status: Historical proposal with dated close-out; not an active execution plan
Date: 2026-06-24
Host: prox (192.168.6.71) — ASUS PN64, 1 TB NVMe
Context: Post–Wave A/B decommission; backup target migrated to Whrrr volume6
This document preserves the June storage audit, original options and recorded outcomes alongside the frozen prox-storage-2026-06-24.md. The 2026-10-25 source-only reconciliation below is not a new storage observation.
Superseded proposal — no operating authorization
LXC 114 nfs-monitoring and 111 influxdb were recorded destroyed on 2026-06-24. Old cleanup, backup, resize and retirement proposals for those instances are closed, not pending work. No reuse of 111 or 114 is established by these records; fresh identity must be verified before any later operation. Owner restrictions remain: saltierpoop stays on prox, Whrrr NFS / Prawns cleanup is out of scope, no backup deletion or relocation without explicit owner approval. Historical commands/options below must not be replayed.
Only the dated residual backlog is retained for future review; every action needs fresh evidence and owner scope approval. No disk, guest, archive or NAS operation was performed for this correction.
Related:
- Compute disposition review — keep / consolidate / retire matrix
- Proxmox consolidation — end-state guest target
- Synology capacity ntfy — Whrrr volume alerts
- Compute decommission queue — vzdump + destroy order
Executive summary (June 2026, before retirement)¶
The June audit described prox as not in hypervisor-level crisis, with two production-adjacent workloads on different failure modes. This is not a current health assessment; 114 was subsequently retired:
| Workload | Primary risk | Root cause |
|---|---|---|
| nfs-monitoring (114) | Imminent — guest disk ~full | 98.7% thin LV, 91% in-guest, 53 GB Docker (ES stack) |
| saltierpoop (100) | Operational — media I/O | Local disk 81% (OK for now); Prawns/Movems NFS at 100% |
Three storage layers must be managed independently:
pve-root— OS, ISOs, local scratch (improved; ISO prune still available)local-lvmthin pool — guest disks (~270 GB thin free; unevenly consumed)- Whrrr NFS — Prawns/synorpn nearly full; infra-backups on volume6 healthy
Recorded decision: ~~Gut or shrink 114~~ 114 retired 2026-06-24. The owner restricted that session to guest disks only, retained infra-backups as the backup target and approved saltierpoop log hygiene. This was not standing approval for future cleanup or NAS work.
Owner decisions (2026-06-24)¶
| Topic | Decision |
|---|---|
| Whrrr NFS / Prawns cleanup | Out of scope — pool layout prevents changes; only VM/LXC actions |
| nfs-monitoring (114) | Backup + destroy — executed 2026-06-24 |
| saltierpoop (100) | Keep on prox — marginal in-guest cleanup for disk alert relief |
Executed (2026-06-24)¶
| Action | Result |
|---|---|
| LXC 114 manual backup | infra-backups/dump/manual-lxc-114-rootfs-2026_06_24.tar.zst (~53 GB) + lxc-114-pct.conf |
| LXC 114 destroy | VMID 114 removed; ~110 GB thin pool freed |
| Prometheus | Removed nfs-monitoring-* scrape jobs from prometheus.yml |
| saltierpoop hygiene | journalctl --vacuum-size=500M (~3.4 GB), /tmp clear, syslog.1 truncate → 78% used / ~22% free on / |
saltierpoop hygiene suggestion (historical, not standing approval)¶
Disk alerts fire when root filesystem free space drops below 20%
(monitoring/prometheus/alerts/node.yml). Saltierpoop flapped at ~19% free before cleanup.
Original suggested commands, retained as non-replayable history; not a safety certification or scheduling instruction (no Docker prune without review):
# DO NOT RUN: # On saltierpoop (guest agent or SSH)
# DO NOT RUN: sudo journalctl --vacuum-size=500M
# DO NOT RUN: sudo find /tmp -mindepth 1 -mtime +7 -delete
# DO NOT RUN: sudo logrotate -f /etc/logrotate.d/rsyslog # if syslog grows again
The proposed monthly DSM/Ansible cron was not approved by this record; do not schedule it from this page. Any future hygiene needs fresh measurements and owner approval. The June one-time outcome above remains as recorded.
vzdump + NFS note (historical failure and alternatives)¶
Large LXC vzdump to infra-backups failed: PVE lxc-usernsexec cannot create .tmp
dirs on NFS with the then-recorded Synology squash (Map root to admin only).
The original alternatives below are history, not authorization to change NAS
permissions or retry a dump of destroyed LXC 114:
- DSM NFS rule → Map all users to admin (fixes native
vzdump), or - Manual mount +
tar | zstdto NFS (used for 114), or tmpdiron storage pointing to local scratch (only if archive fits ~27 GB free on root)
Resolved (2026-06-24)¶
No owner decision required — already done.
| Item | Outcome |
|---|---|
Broken CIFS vm-backups on Prawns |
Removed from PVE |
| New backup target | NFS infra-backups → 192.168.6.215:/volume6/infra-backups (2 TB quota) |
| Retention | keep-last=3 on infra-backups |
Surviving Wave A vzdump on prox local |
103 unmanic, 117 caddy, 122 netboot last-recorded relocated to infra-backups/dump/; ~3.1 GB total includes logs, not the deleted 105/102/107 dumps |
| Validation | Test vzdump 120 succeeded |
Original future-dump example (non-replayable history, not an approved job):
The proposed 2 TB DSM quota increase was conditional, not executed here or preapproved. Fresh capacity, retention, archive availability and trusted checksum verification remain pending. See backup provenance and recovery gates.
Recorded state (2026-06-24, before later retirements)¶
Hypervisor layers¶
| Layer | Size | Used | Free | Assessment |
|---|---|---|---|---|
pve-root (local) |
94 GB | 63 GB (71%) | 27 GB | Improved after dump relocation; ~11 GB ISO prune available |
| local-lvm thin pool | 794 GB | 537 GB (67.5%) | ~270 GB | Adequate if 114 stops growing |
| infra-backups NFS | 2 TB quota | ~3 GB | ~2 TB | Healthy |
| synorpn NFS (Prawns) | 30 TB | 99.6% | ~112 GB | Critical upstream cap |
Guest thin-pool consumers (top)¶
| VMID | Guest | Prov. | Thin data % | ~Actual | In-guest / |
Verdict |
|---|---|---|---|---|---|---|
| 100 | saltierpoop | 260 GB | 79.7% | ~207 GB | 206/258 GB (81%) | Largest anchor; local OK, NFS exposed |
| 114 | nfs-monitoring | 112 GB | 98.7% | ~110 GB | 96/111 GB (91%) | Urgent |
| 119 | harbor-registry | 80 GB | 87.8% | ~70 GB | 45/79 GB (61%) | Monitor; registry GC |
| 200 | haos | 32 GB | 95.3% | ~30 GB | — | HA retention review |
| 123 | infra-services | 30 GB | 65.0% | ~19 GB | — | Healthy |
| 111 | influxdb | 8 GB | 86.7% | ~7 GB | — | Retire after Grafana cutover |
| 116 | pulse | 4 GB | 99.5% | ~4 GB | 59% in-guest | Small but maxed LV |
The audit recorded 12 guests after Wave A/B (3 VMs, 9 LXCs), before the subsequent retirements. The table and diagram preserve that capture, not a live guest list or fresh storage measurements.
flowchart TB
subgraph prox["prox NVMe"]
root["pve-root 27G free"]
thin["thin pool 270G free"]
s100["VM 100 · 207G actual"]
s114["LXC 114 · 110G actual · 98.7%"]
end
subgraph whrrr["Whrrr 192.168.6.215"]
v9["volume9 Prawns · 99.6%"]
v6["volume6 infra-backups · 0.15%"]
end
v9 --> s114
v9 --> s100
v6 --> vzdump["vzdump archives"]
thin --> s100
thin --> s114
Risk register (historical assessment)¶
R1 was superseded by 114 retirement; the other likelihoods, sizes and mitigations are June proposals, not newly verified risks or owner approvals. In particular R2 does not override the exclusion of Whrrr cleanup.
| ID | Risk | Likelihood | Impact | Mitigation owner |
|---|---|---|---|---|
| R1 | 114 rootfs fills → ES/Docker crash | High | Loss of legacy dashboards; possible corrupt indices | Owner: keep vs gut 114 |
| R2 | Prawns NFS full → saltierpoop *arr/download failures | Medium–High | Media pipeline stalls | Owner: Whrrr archive policy |
| R3 | Large vzdump to local during misconfigured job |
Low (post-fix) | Repeat metrimon failure | Ops: always --storage infra-backups |
| R4 | saltierpoop thin growth without cleanup | Medium | Erodes pool headroom over months | Saltbox log/docker hygiene |
| R5 | pulse / haos / harbor thin max | Medium | Niche service outage | Per-guest cleanup or resize |
| R6 | 2 TB backup quota exceeded by full VM dump | Low until scheduled | Backup job failure | Raise quota when needed |
nfs-monitoring (LXC 114) — superseded proposal¶
Closed by retirement, not by Option A cleanup
Owner chose backup + destroy, executed 2026-06-24 with a manual rootfs archive after native vzdump failures. Original options below explain the discarded proposal only. Do not clean, resize, back up or start a guest using old ID 114. InfluxDB 111 was also archived and destroyed on 2026-06-24 after the Grafana cutover; the pending language in this original proposal is superseded.
What the June audit recorded¶
- Role (original): NFS bridge + observability stack for Prawns/synorpn.
- Mounts:
synorpn(Prawns NFS, 100%), legacymp1prawns bind. - Running containers: elasticsearch, kibana, logstash, file_crawler, cadvisor, elasticsearch_exporter.
- Migration status: NFS dashboard metrics moved to Prometheus on infra-services (2026-06-24). Influx on LXC 111 was pending Grafana datasource removal at proposal time; the June journal records subsequent archive and destruction.
Original urgency rationale (superseded by retirement)¶
- Thin LV at 98.7% — prox cannot grow the guest much without expansion or cleanup.
- 53 GB in
/var/lib/dockeron an 111 GB rootfs with 11 GB free. - Upstream Prawns at 100% — file_crawler and any NFS writes are on a full volume.
Options¶
| Option | Actions | Pros | Cons | Recommended when |
|---|---|---|---|---|
| A — Gut legacy stack (default) | Stop ES/Kibana/Logstash/file_crawler; keep cadvisor + ES exporter if still scraped; prune Docker volumes | Frees 40–50+ GB quickly; reduces ops burden | Lose Kibana/Logstash if still used | No one opens Kibana weekly |
| B — Keep stack, shrink data | Curate ES indices; Docker prune; reduce retention | Preserves UI for debugging | Labor-intensive; Prawns still 100% | Short-term bridge only |
| C — Keep stack, expand disk | Resize LXC to 150 GB+; set ES ILM | Headroom for growth | Consumes thin pool; doesn't fix Prawns | Confirmed ongoing ES need |
| D — Full retire | Stop LXC; remove from Prometheus scrape; update inventory | Maximum prox relief | Lose NFS-side tooling entirely | Bridge no longer needed |
Superseded proposal: “Option A now”, then reconsider D. It was not the final
owner choice. Backup + destroy was executed instead, and the nfs-monitoring-*
scrape jobs were removed. The old exporter-retention suggestion is not pending.
Owner decisions (114)¶
D1–D4 closed by supersession, not checked off as executed cleanup: the usage question, Option A approval, B/C sizing choice and file_crawler pause proposal no longer apply to the destroyed instance. Preserve the executed backup/destroy outcome above; do not infer that the unchosen alternatives ran.
saltierpoop (VM 100) — historical alternatives¶
The owner chose keep on prox plus a marginal in-guest hygiene pass. The old B (NAS cleanup) and C (VMM migration) options below are not approved. Their horizons and measurements are dated proposal context, not a current schedule.
What the June audit recorded¶
- Role: Production Saltbox media stack (~40 containers).
- Prox cost: 30 GB RAM, 260 GB thin disk (~207 GB actual) — ~37% of all thin usage.
- In-guest disk: 206 / 258 GB (81%) — ~51 GB free on local root.
- Docker loop: 34 / 54 GB — not the immediate problem.
- NFS mounts:
| Export | Volume | Use % | Free |
|---|---|---|---|
| Prawns | volume9 | 100% | ~112 GB |
| Movems | volume2 | 100% | ~87 GB |
| SerializedWatchables | volume1 | 98% | ~938 GB |
| OrderedWords | volume6 | 43% | ~8.3 TB |
Why it feels risky (but differently from 114)¶
- Prox local disk: Moderate — not imminently full.
- Media pipeline: High — new writes to Prawns/Movems can fail or stall while exports show 100%.
- Backup: Full
vzdumpfits the 2 TB quota; compressed size may be 80–150+ GB. Raise quota before making full-VM dumps routine.
Options¶
| Option | Actions | Pros | Cons | Horizon |
|---|---|---|---|---|
| A — Hygiene only | Saltbox log rotation, Docker prune, review / growth |
Low risk; no architecture change | Doesn't fix Prawns | Now |
| B — Whrrr media policy | Prawns/Movems cleanup or cold-tier moves | Fixes upstream for 100 + 114 | Owner media/archive decisions | Soon |
| C — Migrate to Whrrr VMM | Move VM off prox per PLAN baseline | Frees ~207 GB thin + 30 GB RAM | VMM validation, cutover window | Phase 9+ |
| D — Resize / split disks | Expand LV or add data disk | More local room | Doesn't fix NFS; uses thin pool | Only if local fills |
Superseded proposal: “A + B in parallel”, with C as a possible strategic migration from PLAN.md. The recorded owner decision instead excluded Whrrr cleanup and kept saltierpoop on prox. The old proposal cannot override those restrictions.
Owner decisions (100)¶
- D5: June risk discussion retained, not a present capacity reading.
- D6: Whrrr cleanup/tiering excluded by owner; no schedule or approval.
- D7: One-time log hygiene recorded executed; no standing Docker/image cleanup approval.
- D8: Keep on prox; no VMM migration authorization.
Secondary guests — original suggestions, not an active backlog¶
InfluxDB 111 was retired on 2026-06-24; Graylog 109 was recorded operational as central syslog on 2026-06-25, with senders verified 2026-06-26; ISO prune was recorded done 2026-06-25 (~9 GB freed, keeping 24.04 server + alpine). See the June journal. Those rows below are superseded, not remaining retire/revive/prune instructions. Pulse/Harbor/HAOS suggestions require fresh evidence and owner approval; their old percentages do not establish present urgency.
| VMID | Guest | Issue | Proposed action | Owner gate |
|---|---|---|---|---|
| 111 | influxdb | Superseded by Prometheus for thermals/NFS | Retire LXC after Grafana Influx datasources removed | D9: confirm datasources migrated |
| 109 | graylog | Stopped; Pattern E central syslog | Revive per central-syslog-graylog | Separate syslog decision |
| 116 | pulse | 99.5% thin on 4 GB LV | Expand to 8 GB or prune in-guest | Low urgency |
| 119 | harbor-registry | 87.8% thin | Registry GC, old tag cleanup | Low urgency |
| 200 | haos | 95.3% thin | Review HA snapshot/history retention | Low urgency |
| — | prox ISOs | ~11 GB redundant Ubuntu ISOs | Delete desktop + duplicate server ISOs; keep one 24.04 server | D10: pick keeper ISO |
Whrrr upstream (shared dependency)¶
Owner 2026-06-24: Whrrr NFS / pool cleanup is out of scope — pool layout prevents changes for now. This proposal covers prox guests only.
114 and 100 both historically depended on volume9 Prawns near capacity.
Operational backups use volume6 (infra-backups) — do not route vzdump to Prawns.
| Volume | Pool | Role | Use % | Proposal |
|---|---|---|---|---|
| volume9 (Prawns) | vg3 | Media + synorpn + saltierpoop paths | ~100% | Owner archive policy; not backup target |
| volume2 (Movems) | vg1 | Movies NFS | ~100% | Same |
| volume1 (SerializedWatchables) | vg1 | TV | ~98% | Monitor |
| volume6 (infra-backups) | vg2 | Proxmox vzdump | ~0% | Keep; raise quota on demand |
| volume6 (OrderedWords) | vg2 | Books | ~43% | Healthy |
Capacity alerts: synology-capacity-ntfy (deployed on Whrrr).
Phased execution plan (historical close-out only)¶
Phase 0 — Done¶
- [x]
infra-backupsNFS storage on prox - [x] Retire
vm-backupsCIFS - [x] Relocate surviving legacy vzdump off
pve-root(not the deleted artifacts) - [x] Document in prox-storage-2026-06-24.md
Phase 1 — Superseded 2026-06-24¶
The original D1–D4 cleanup plan and its below-70% root / below-85% thin-LV criteria were superseded by backup + destroy of 114, not achieved by the proposed Option A cleanup. Its optional backup instruction is quarantined solely as history:
Do not retry that command or resume exporter/file_crawler work against old ID 114.
Phase 2 — Recorded outcomes and exclusions¶
- InfluxDB 111: Grafana cutover, archive and retirement recorded 2026-06-24.
- prox ISO prune: recorded done 2026-06-25 (~9 GB); original ~10 GB was an estimate.
- saltierpoop: one-time log hygiene recorded, not general Docker prune approval.
- Whrrr Prawns/Movems capacity actions: out of scope, not a pending phase.
- Harbor / HAOS / Pulse: no completion inferred; see residual backlog below.
Original targets (pve-root above 35 GB free; Prawns below 98%) were proposal
criteria, not verified outcomes or permission to change NAS storage.
Phase 3 — Superseded strategic suggestions¶
Keep saltierpoop on prox; no VMM migration authorized. Do not reconsider retirement of the already destroyed nfs-monitoring instance. Graylog revive was superseded by the recorded central-syslog outcome, not a remaining storage action.
Owner decision checklist (closed historical questions)¶
| IDs | Recorded disposition |
|---|---|
| D1–D4 | Superseded by 114 backup + destroy; not Option A/B/C completion |
| D5 | June capacity-risk discussion, not a new measurement |
| D6 | Whrrr cleanup excluded; no approval |
| D7 | One-time saltierpoop hygiene recorded; repeat work needs approval |
| D8 | Keep saltierpoop on prox; migration not authorized |
| D9 | InfluxDB cutover/archive/retirement recorded 2026-06-24 |
| D10 | ISO prune recorded done 2026-06-25; not a new deletion request |
No reply to the old D1–D10 form authorizes execution against present guests.
Dated residual backlog (source review 2026-10-25)¶
| Review item | Gate before any action |
|---|---|
| Pulse, Harbor, HAOS capacity/retention suggestions | Fresh read-only guest identity, filesystem/thin-pool measurements, workload dependencies and owner-approved scope; do not size from June percentages |
| saltierpoop repeat hygiene | Fresh guest measurements and explicit maintenance approval; keep on prox, no Docker prune by inference |
| Backup target quota / native vzdump compatibility | Separately authorized fresh capacity, permission and recovery review; no quota/squash change or backup run approved here |
| Archive availability / recovery | Exact artifact identity, trusted checksum, isolated restore/integrity/rollback and owner acceptance remain pending; no NAS or alternate-copy search performed |
These are review gates, not scheduled jobs. Whrrr NFS / Prawns cleanup remains out of scope; any owner reconsideration is a separate scope decision, not this backlog. Backup deletion or relocation always needs explicit owner approval.
What we are not proposing¶
- Deleting backup artifacts without explicit owner approval (see homelab agent rules).
- Moving vzdump back to Prawns or
localas default. - Destroying saltierpoop or operating on a guest merely because it has an old VMID; nfs-monitoring is already recorded destroyed.
- Raising
infra-backupsquota preemptively (owner: on occasion requiring it).
Changelog¶
| Date | Change |
|---|---|
| 2026-10-25 | Source-only close-out annotations; stale proposals quarantined, owner restrictions and recovery gates retained; no new live observation |
| 2026-06-24 | Initial proposal from live prox audit + owner storage session |