Exported pool showing under drives but not in import pool dropdown

I’m moving disks from an old NAS box to a new one, however I am unable to import the old pool in the new box. Under storage > disks it shows the 3 disks of the old pool and shows them as rust (Exported) which is what I would expect as that was the old pool name. However when I go to storage > import pool the pool dropdown has no items in it, it is just an empty list. Am I missing a step somewhere. The documentation I read suggests that there shouldn’t be any other steps needed. So what am I missing?

*I did import my configuration from the old box before doing this so there is a rust VDEV etc already showing in storage. Do I need to remove that first or can I just add the drives to it? I’d like to preserve my dozens of shares if possible but I think that isn’t tied directly to the pool.

If this was just simple storage, you would have powered off, moved disks to new server, fresh install on new boot device and reloaded your system configuration. The system should have picked up the pool. It might help if you post details on your before server and the current server. OS version, pool layouts, etc.

How did you do your process?

Post back the results for the following commands using Preformatted Text mode (</>) or Ctrl+e. One Preformatted Text reply per command

sudo zpool status -v
sudo zpool import

The previous box was on the latest community version of Core. The new is the latest Scale. I exported with keys(?) that produced a tar which I imported in the new box without issue. I only have the one pool (rust raidz1), was running no jails.

I installed Scale and imported the old config on it. Then I shut down the Core box pulled the drives and then put them in the new box and restarted. Now I’m trying to import the pool from those drives I pulled.

root@truenas[~]# zpool status -v
  pool: boot-pool
 state: ONLINE
config:

	NAME        STATE     READ WRITE CKSUM
	boot-pool   ONLINE       0     0     0
	  sda3      ONLINE       0     0     0

errors: No known data errors

root@truenas[~]# zpool import
  pool: rust
    id: 13590953219994848660
 state: ONLINE
status: The pool was last accessed by another system.
action: The pool can be imported using its name or numeric identifier and
	the '-f' flag.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY
config:

	rust        ONLINE
	  raidz1-0  ONLINE
	    sdc2    ONLINE
	    sdd2    ONLINE
	    sdb2    ONLINE

You can try with the -f flag. I am guessing you had the Core system up after the system config download and the transactions don’t match what it expects.

zpool import -f rust

You might need to use ‘sudo’ before it. If that works, export the pool with the CLI / Shell and then import it using the GUI. TrueNAS wants you to use the GUI or you could have problems with the middleware.

Thanks, that did the trick. I was able to export it from the UI and then it showed up in the UI import and imported again correctly. Thanks for the help!

And now a new error. When I go to the the DataSets page I get “[ENOENT] Path not found.” This migration has gone a lot less smooth than I would have hoped.

Can you post screenshots or explain what were expecting to see and what you are seeing? I’m not sure where you are on getting the pool, etc. showing properly.

zfs list should be able to show us the same type of info, if you want to paste the results back.

It’s might be purely a UI issue. It comes and goes. It happens for all the entries in the tree under datasets, except maybe the iSCSI items, I don’t recall them throwing it. Sometimes the error has the tree path in it as well /rust/media for example. I had a stack trace of the error as well but when I couldn’t connect to the forums last night I couldn’t past it, if the error happens again I’ll attach it as well.

If you can capture and post the error details, it might help. You expand the View Details with the plus button on the CallError window. I don’t think the copy and paste of the error works cleanly but it is better than nothing.

Here is the stack trace that comes with the error.

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/ws_handler/rpc.py", line 360, in process_method_call
    result = await method.call(app, id_, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/method.py", line 57, in call
    result = await self.middleware.call_with_audit(self.name, self.serviceobj, methodobj, params, app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 954, in call_with_audit
    result = await self._call(method, serviceobj, methodobj, params, app=app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 782, in _call
    return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 665, in run_in_executor
    return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py", line 116, in wrapped
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem_/acl.py", line 483, in getacl
    raise CallError('Path not found.', errno.ENOENT)
middlewared.service_exception.CallError: [ENOENT] Path not found.

Oddly sometimes it gives nothing for path and sometimes it actually puts a path (although an incorrect one).

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/ws_handler/rpc.py", line 360, in process_method_call
    result = await method.call(app, id_, params)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/server/method.py", line 57, in call
    result = await self.middleware.call_with_audit(self.name, self.serviceobj, methodobj, params, app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 954, in call_with_audit
    result = await self._call(method, serviceobj, methodobj, params, app=app,
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 782, in _call
    return await self.run_in_executor(prepared_call.executor, methodobj, *prepared_call.args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/main.py", line 665, in run_in_executor
    return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py", line 116, in wrapped
    result = func(*args)
             ^^^^^^^^^^^
  File "/usr/lib/python3/dist-packages/middlewared/plugins/filesystem.py", line 467, in stat
    raise CallError(f'Path {_path} not found', errno.ENOENT)
middlewared.service_exception.CallError: [ENOENT] Path /rust not found

Those stack traces are for the same UI element, but it changes when I leave and come back to the dataset page. I believe the path should be /mnt/rust since that’s where the pool is mounted.