# 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?