4.6 KiB
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
-
Preparation:
- Purchase 2x new HDDs (16TB or 20-24TB)
- Create NixOS configuration for new storage host
- Set up bare metal NixOS installation
-
Initial BTRFS pool:
- Install 2 new disks
- Create BTRFS filesystem in RAID1
- Mount and test NFS exports
-
Data migration:
- Copy data from TrueNAS ZFS pool to new BTRFS pool over 10GbE
- Verify data integrity
-
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
-
Service migration:
- Set up radarr/sonarr/nzbget/restic as NixOS services
- Update NFS client mounts on consuming hosts
-
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
- Decide on disk size (16TB vs 20-24TB)
- Purchase disks
- Design NixOS host configuration (
hosts/nas1/) - Plan detailed migration timeline
- 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?