recovery plan for unraid
| LICENSE | ||
| README.md | ||
Unraid Backup & Recovery Plan
Last revised: 2025-10-31
Server name: Gyarados
System Overview
| Component | Details |
|---|---|
| Array | 4 drives total (3 data + 1 parity) |
| Parity | 1 drive (single parity protection) |
| Pools | - cache_protected → 500GB RAID1 (btrfs) - cache_appdata → 500GB RAID1 (btrfs) - cache → 4TB XFS (no redundancy) |
| Important Shares | appdata, system, backups |
| Unraid Flash Drive | Backed up daily by CA Backup/Restore plugin |
Backup Strategy
Local / Onsite
| Backup Type | Tool | Frequency | Destination | Notes |
|---|---|---|---|---|
| Appdata + Flash | CA Backup/Restore | Daily | /mnt/user/backups/unraid_backups on array |
Stored in “backups” share, included in offsite sync |
| Array Data Backup | rsync |
Monthly | External 28TB USB drive | Plugged in manually, includes flash + appdata backups |
| Parity Check | Unraid checker | Monthly | N/A | Non-correcting, same day as backup |
Offsite
| Backup Type | Tool | Frequency | Destination | Notes |
|---|---|---|---|---|
| 1st Critical Data Backup | Duplicacy | Nightly | Backblaze B2 | Backs up /mnt/user/backups share (includes appdata + flash backups) |
| 2nd Critical Data Backup | rclone | Weekly | Backblaze B2 | Backs up /mnt/user/backups share (includes appdata + flash backups) |
| Offsite Verification | Scripted Duplicacy restore | Monthly | Local test_restore folder |
Verifies integrity with checksum comparison |
Maintenance Schedule
| Task | Frequency | Tool / Command | Notes |
|---|---|---|---|
| Parity Check (non-correcting) | Monthly | Unraid Checker | Run before external backup |
| External Backup (rsync) | Monthly | 28TB External Userscript | Rotate drive offsite if possible |
| btrfs Scrub (cache pools) | Monthly | btrfs scrub start -Bd /mnt/cache_protected and /mnt/cache_appdata |
Detects and repairs bitrot |
| Duplicacy Check | Monthly | duplicacy check -a -tabular |
Confirms remote chunks are valid |
| File Integrity Verification | Monthly | Offsite Verify Userscript | Grab random files, checksum them and compare vs. backup |
| Recovery Test | Every 90 days | Manual | Restore 3-5 files from each backup source |
Recovery Procedures
Array or Disk Failure
- Confirm only one disk is disabled and parity is valid before proceeding with rebuild.
- Identify the failed drive by serial number. Stop the array.
- Replace the failed drive with a new, precleared one and assign it to the same slot.
- Start the array — Unraid will begin rebuilding the disk from parity.
- Run a non-correcting parity check to confirm parity accuracy post-rebuild.
Flash Drive Failure
- Replace flash with new USB stick.
- Copy contents of latest flash backup (gyarados-flash-backup.zip) from
/mnt/user/backups/unraid_backupsor Backblaze. - Transfer license using Unraid’s automated license replacement system (Tools → Registration).
Appdata Loss / Corruption
- Stop the Docker service before restoring appdata.
- Install “CA Backup/Restore Appdata” plugin (if not already).
- Select most recent backup under
/mnt/user/backups/unraid_backups/. - Click "Restore" at the top of the Appdata Restore plugin and follow instructions.
- Start the Docker service and verify containers.
Full Array Loss / Catastrophic Event
- Reinstall Unraid on new flash drive if needed.
- Recreate array and pools matching original layout from system overview.
- Restore data from:
- External 28TB backup drive (via rsync)
- Duplicacy or rclone (Backblaze) for critical data if External is damaged