diff --git a/docs/plans/truenas-migration.md b/docs/plans/truenas-migration.md new file mode 100644 index 0000000..0cb3ad4 --- /dev/null +++ b/docs/plans/truenas-migration.md @@ -0,0 +1,151 @@ +# TrueNAS Migration Planning + +## Current State + +### Hardware +- CPU: AMD Ryzen 5 5600G with Radeon Graphics +- RAM: 32GB +- Network: 10GbE (mlxen0) +- Software: TrueNAS-13.0-U6.1 (Core) + +### Storage Status + +**hdd-pool**: 29.1TB total, **28.4TB used, 658GB free (97% capacity)** ⚠️ +- mirror-0: 2x Seagate ST16000NE000 16TB HDD (16TB usable) +- mirror-1: 2x WD WD80EFBX 8TB HDD (8TB usable) +- mirror-2: 2x Seagate ST8000VN004 8TB HDD (8TB usable) + +## Goal + +Expand storage capacity for the main hdd-pool. Since we need to add disks anyway, also evaluating whether to upgrade or replace the entire system. + +## Decisions + +### Migration Approach: Option 3 - Migrate to NixOS + +**Decision**: Replace TrueNAS with NixOS bare metal installation + +**Rationale**: +- Aligns with existing infrastructure (16+ NixOS hosts already managed in this repo) +- Declarative configuration fits homelab philosophy +- Automatic monitoring/logging integration (Prometheus + Promtail) +- Auto-upgrades via same mechanism as other hosts +- SOPS secrets management integration +- TrueNAS-specific features (WebGUI, jails) not heavily utilized + +**Service migration**: +- radarr/sonarr: Native NixOS services (`services.radarr`, `services.sonarr`) +- restic-rest: `services.restic.server` +- nzbget: NixOS service or OCI container +- NFS exports: `services.nfs.server` + +### Filesystem: BTRFS RAID1 + +**Decision**: Migrate from ZFS to BTRFS with RAID1 + +**Rationale**: +- **In-kernel**: No out-of-tree module issues like ZFS +- **Flexible expansion**: Add individual disks, not required to buy pairs +- **Mixed disk sizes**: Better handling than ZFS multi-vdev approach +- **RAID level conversion**: Can convert between RAID levels in place +- Built-in checksumming, snapshots, compression (zstd) +- NixOS has good BTRFS support + +**BTRFS RAID1 notes**: +- "RAID1" means 2 copies of all data +- Distributes across all available devices +- With 6+ disks, provides redundancy + capacity scaling +- RAID5/6 avoided (known issues), RAID1/10 are stable + +### Hardware: Keep Existing + Add Disks + +**Decision**: Retain current hardware, expand disk capacity + +**Hardware to keep**: +- AMD Ryzen 5 5600G (sufficient for NAS workload) +- 32GB RAM (adequate) +- 10GbE network interface +- Chassis + +**Storage architecture**: + +**Bulk storage** (BTRFS RAID1 on HDDs): +- Current: 6x HDDs (2x16TB + 2x8TB + 2x8TB) +- Add: 2x new HDDs (size TBD) +- Use: Media, downloads, backups, non-critical data +- Risk tolerance: High (data mostly replaceable) + +**Critical data** (small volume): +- Use 2x 240GB SSDs in mirror (BTRFS or ZFS) +- Or use 2TB NVMe for critical data +- Risk tolerance: Low (data important but small) + +### Disk Purchase Decision + +**Options under consideration**: + +**Option A: 2x 16TB drives** +- Matches largest current drives +- Enables potential future RAID5 if desired (6x 16TB array) +- More conservative capacity increase + +**Option B: 2x 20-24TB drives** +- Larger capacity headroom +- Better $/TB ratio typically +- Future-proofs better + +**Initial purchase**: 2 drives (chassis has space for 2 more without modifications) + +## Migration Strategy + +### High-Level Plan + +1. **Preparation**: + - Purchase 2x new HDDs (16TB or 20-24TB) + - Create NixOS configuration for new storage host + - Set up bare metal NixOS installation + +2. **Initial BTRFS pool**: + - Install 2 new disks + - Create BTRFS filesystem in RAID1 + - Mount and test NFS exports + +3. **Data migration**: + - Copy data from TrueNAS ZFS pool to new BTRFS pool over 10GbE + - Verify data integrity + +4. **Expand pool**: + - As old ZFS pool is emptied, wipe drives and add to BTRFS pool + - Pool grows incrementally: 2 → 4 → 6 → 8 disks + - BTRFS rebalances data across new devices + +5. **Service migration**: + - Set up radarr/sonarr/nzbget/restic as NixOS services + - Update NFS client mounts on consuming hosts + +6. **Cutover**: + - Point consumers to new NAS host + - Decommission TrueNAS + - Repurpose hardware or keep as spare + +### Migration Advantages + +- **Low risk**: New pool created independently, old data remains intact during migration +- **Incremental**: Can add old disks one at a time as space allows +- **Flexible**: BTRFS handles mixed disk sizes gracefully +- **Reversible**: Keep TrueNAS running until fully validated + +## Next Steps + +1. Decide on disk size (16TB vs 20-24TB) +2. Purchase disks +3. Design NixOS host configuration (`hosts/nas1/`) +4. Plan detailed migration timeline +5. Document NFS export mapping (current → new) + +## Open Questions + +- [ ] Final decision on disk size? +- [ ] Hostname for new NAS host? (nas1? storage1?) +- [ ] IP address allocation (keep 10.69.12.50 or new IP?) +- [ ] Timeline/maintenance window for migration?