92 lines
2.5 KiB
Markdown
92 lines
2.5 KiB
Markdown
# Agrarian VM Backup Runbook
|
|
|
|
Agrarian VM backups run on Unraid `DevBox` and protect the VM definitions,
|
|
NVRAM, and virtual disks for the development/build machines.
|
|
|
|
## VMs
|
|
|
|
- `Windows-Builder`
|
|
- `Ubuntu-Codex`
|
|
|
|
## Paths
|
|
|
|
- Persistent script: `/boot/config/custom/agrarian-vm-backup.sh`
|
|
- Runtime helper path: `/usr/local/sbin/agrarian-vm-backup`
|
|
- Backup root: `/mnt/user/backups/agrarian-game/vms`
|
|
- Snapshots: `/mnt/user/backups/agrarian-game/vms/snapshots`
|
|
- Cron definition: `/boot/config/plugins/dynamix/agrarian-vm-backup.cron`
|
|
|
|
## Safety Model
|
|
|
|
The scheduled job is safe by default. It skips VMs that are currently running,
|
|
because copying a live VM disk image is not considered a reliable backup.
|
|
|
|
For a real VM backup during a maintenance window, run:
|
|
|
|
```bash
|
|
/boot/config/custom/agrarian-vm-backup.sh --shutdown-running
|
|
```
|
|
|
|
If running directly from the persistent flash path fails because `/boot` is
|
|
mounted noexec, invoke it through bash:
|
|
|
|
```bash
|
|
/bin/bash /boot/config/custom/agrarian-vm-backup.sh --shutdown-running
|
|
```
|
|
|
|
That command gracefully shuts down any running target VM, backs up its XML,
|
|
NVRAM, Unraid VM/share config, and compressed `qcow2` disk image, then starts
|
|
the VM again after the backup completes.
|
|
|
|
Preview what would happen:
|
|
|
|
```bash
|
|
/bin/bash /boot/config/custom/agrarian-vm-backup.sh --dry-run
|
|
```
|
|
|
|
Back up one VM during maintenance:
|
|
|
|
```bash
|
|
/bin/bash /boot/config/custom/agrarian-vm-backup.sh --shutdown-running --vm Ubuntu-Codex
|
|
```
|
|
|
|
## Schedule
|
|
|
|
The installed cron job runs weekly. Without `--shutdown-running`, it only backs
|
|
up VMs that are already off. This avoids an unexpected Windows build machine or
|
|
Ubuntu-Codex outage during active work.
|
|
|
|
## Retention
|
|
|
|
Snapshots older than 120 days are pruned after a successful backup. Manual
|
|
pre-change backups can be copied or renamed before pruning if they need to be
|
|
kept longer.
|
|
|
|
## Restore Notes
|
|
|
|
Each snapshot contains:
|
|
|
|
- `MANIFEST.txt`
|
|
- `SHA256SUMS`
|
|
- VM XML under `vms/<VM>/xml/`
|
|
- NVRAM files under `vms/<VM>/nvram/` when present
|
|
- compressed `qcow2` disk images under `vms/<VM>/disks/`
|
|
- selected Unraid config under `unraid-config/`
|
|
|
|
Verify a snapshot:
|
|
|
|
```bash
|
|
cd /mnt/user/backups/agrarian-game/vms/snapshots/<timestamp>
|
|
sha256sum -c SHA256SUMS
|
|
```
|
|
|
|
Inspect a backed-up disk:
|
|
|
|
```bash
|
|
qemu-img info vms/Ubuntu-Codex/disks/hdc-vdisk1.img.qcow2
|
|
```
|
|
|
|
Restore should be done to a new VM or a test path first. Do not overwrite a
|
|
working VM disk until the backup has been verified and the original disk has
|
|
been preserved.
|