ZFS pool ONLINE but OFFLINE in TrueNAS after upgrade (tank vs tank2, same GUID)

Hi,

After upgrading from TrueNAS SCALE 25.10.1 to 25.10.7, I noticed that most of my datasets were no longer mounted, even though my ZFS pool was healthy and ONLINE.

Only tank/ix-apps and its children were mounted. Docker started anyway, causing some applications to appear as freshly installed because their bind mounts pointed to empty directories on the boot filesystem.

I stopped the containers, manually mounted the missing datasets, and restored the applications. Everything is working again, but I’m concerned about the next reboot.

The issue

ZFS sees my pool as tank, while TrueNAS still has it registered as tank2 (OFFLINE). Both have exactly the same GUID.

$ zpool list -o name,guid,health

NAME       GUID                  HEALTH
boot-pool  15737829051869996779 ONLINE
tank       1875691513146793369  ONLINE
$ midclt call pool.query
id: 2
name: tank2
guid: 1875691513146793369
status: OFFLINE
path: /mnt/tank2

$ midclt call datastore.query storage.volume
id: 2
vol_name: tank2
vol_guid: 1875691513146793369

The middleware logs contain:

Failed to mount datasets for pool: 'tank2'
cannot open 'tank2': dataset does not exist

Similar errors were already present in January, before this upgrade. Some disk configuration changes were made previously, which may explain the old pool name.

What I’ve checked

  • tank is ONLINE with no reported ZFS errors.

  • All datasets mount successfully manually (canmount=on).

  • Pool properties: altroot=/mnt, cachefile=/data/zfs/zpool.cache.

  • pool.dataset.query correctly recognizes tank.

  • pool.import_find returns an empty list (the pool is already imported).

  • No encrypted datasets, SMB shares or scheduled snapshot tasks were found.

  • System dataset is on boot-pool; Docker storage uses tank/ix-apps.

  • TrueNAS configuration and Docker application configurations have been backed up.

My question

What’s the safest way to make TrueNAS recognize the existing pool as tank instead of tank2, without exporting/reimporting it?

Would changing storage.volume.vol_name using midclt datastore.update be safe, or is there a supported way to re-register the pool?

I’d also like to prevent Docker from starting before the required datasets are mounted.

The pool contains several TiB of media so I’d prefer to avoid any risky operations. I haven’t modified the database or attempted an export/import.

Thanks for any advice!

I wouldn’t consider an Export and Import of a pool using the GUI as risky. It appears you have an issue with a previous pool rename or something. Attaching link to the pool renaming from Resources. You can wait for others to reply with their thoughts but I would think export pool in GUI. Import pool in GUI and make sure it says ‘tank’ for the name before import, if not I think you would go through the pool renaming procedure to change ‘tank2’ to ‘tank’.

Thanks for the advice and the link!

One detail I’m unsure about: the actual ZFS pool is already named tank and is ONLINE. It’s only the TrueNAS middleware/database that still references it as tank2 (OFFLINE), with the same GUID.

Since pool.query reports tank2 as OFFLINE, would exporting it through the GUI actually disconnect the currently imported tank pool, or could the export fail because of this mismatch?

Also, tank contains ix-apps (Docker), as well as my application configurations and media. Would you recommend stopping or disabling Apps before doing this?

I’ll wait a little to see if anyone suggests another approach. Otherwise, I’ll probably go with the export/import procedure you recommended, including renaming the pool if necessary. I’m fine with updating my Docker paths afterward, as long as the data and application configurations are preserved.

Thanks again for your help!

Update: The issue is now resolved, and the fix has been confirmed after a full reboot.

The problem was caused by a mismatch between the pool name stored in the TrueNAS configuration database (tank2) and the actual ZFS pool name (tank). Both had the same GUID.

After backing up my TrueNAS configuration and verifying that the ZFS pool was healthy, I corrected the pool name using the middleware:

sudo midclt call datastore.update \
  storage.volume \
  2 \
  '{"vol_name":"tank"}'

Note: This uses a private middleware method. The record ID (2) is specific to my installation.

After a full reboot, everything works correctly:

  • TrueNAS recognizes tank as ONLINE and healthy.

  • All 30 datasets mount automatically.

  • Docker and all containers start normally.

  • No more tank2 or dataset mounting errors.

No ZFS export/import or pool renaming was necessary.

Thanks for the help!