Files
nixos-servers/docs/plans/truenas-migration.md
Torjus Håkestad 7fc69c40a6
All checks were successful
Run nix flake check / flake-check (push) Successful in 2m18s
Periodic flake update / flake-update (push) Successful in 1m13s
docs: add truenas-migration plan
2026-02-02 18:29:11 +01:00

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

  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?