TrueNAS: migrating from 8x 4TB to 4x 16TB drives

Swapping every drive in a full NAS with no spare bays: a USB-C DAS, ZFS replication, the read-only trap, and the pool rename at the end.

CrossedWires Team
March 22, 2025
5
Storage
TrueNAS: migrating from 8x 4TB to 4x 16TB drives

We recently ran a lab project to migrate from 8x 4TB HDDs to 4x 16TB HDDs. Based on our experience and the questions we saw on Reddit, here is the write-up.

Hardware setup

Our NAS has 8 physical bays with no spare slots for the new drives. To work around that we used a 4-bay hard drive enclosure (DAS, direct attached storage) with USB-C at 10 Gbps.

4-bay USB-C enclosure connected to the TrueNAS appliance

With the DAS we could:

  1. Attach the new drives to the TrueNAS appliance using a USB-C to USB-A 3.0 cable (DAS to the motherboard's internal USB 3.0 header).
  2. Create a new ZFS RAID on the new drives.
  3. Transfer data using ZFS snapshot replication via a TrueNAS Replication Task.

Setting up ZFS snapshot replication

Important: two datasets cannot share the same name. If a dataset named data already exists, name the new one data_2 for now.

When configuring the Replication Task, pay close attention to the Destination Dataset Read-only Policy setting:

Destination dataset read-only policy setting
  • SET changes all destination datasets to readonly=on after replication completes.
  • REQUIRE stops replication unless all destination datasets have readonly=on.
  • IGNORE disables read-only enforcement during replication.

We overlooked this, and after the transfer the dataset was stuck read-only. The fix:

1. List the ZFS datasets:

zfs list

2. Disable the read-only flag on each dataset. With a pool named data and datasets backups and binaries:

zfs set readonly=off data
zfs set readonly=off data/backups
zfs set readonly=off data/binaries

Before renaming or switching pools, disable all externally available services: SMB, NFS, iSCSI.

Finalizing the migration

  1. Run a final replication pass so all data is current.
  2. In the TrueNAS UI go to Storage → Export/Disconnect and remove both datasets.
  3. Physically disconnect the old drives and connect the new ones.
  4. Rename the new pool from data_2 to data from the shell:
zpool import data_2 data

5. Export the new pool:

zpool export data

6. Re-import it in the TrueNAS UI (Storage → Import Tool).

This let us move the data from the old drives to the new ones using TrueNAS replication, with all shares and configuration intact and no downtime beyond the swap itself.

More from the blog

Are you ready?
Contact us