docs: add truenas-migration plan
This commit is contained in:
151
docs/plans/truenas-migration.md
Normal file
151
docs/plans/truenas-migration.md
Normal file
@@ -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?
|
||||||
Reference in New Issue
Block a user