Pool doesn't decrypt

After a power outage none of my pools decrypt upon typing in the passphrase. I get this error but am not tech savvy enough to derive help from it. Hope that someone here can point to the mistake im making.

Error: concurrent.futures.process._RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/concurrent/futures/process.py", line 239, in _process_worker
    r = call_item.fn(*call_item.args, **call_item.kwargs)
  File "/usr/local/lib/python3.7/site-packages/middlewared/worker.py", line 97, in main_worker
    res = loop.run_until_complete(coro)
  File "/usr/local/lib/python3.7/asyncio/base_events.py", line 587, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.7/site-packages/middlewared/worker.py", line 53, in _run
    return await self._call(name, serviceobj, methodobj, params=args, job=job)
  File "/usr/local/lib/python3.7/site-packages/middlewared/worker.py", line 45, in _call
    return methodobj(*params)
  File "/usr/local/lib/python3.7/site-packages/middlewared/worker.py", line 45, in _call
    return methodobj(*params)
  File "/usr/local/lib/python3.7/site-packages/middlewared/schema.py", line 965, in nf
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/middlewared/plugins/zfs.py", line 390, in import_pool
    'Failed to mount datasets after importing "%s" pool: %s', name_or_guid, str(e), exc_info=True
  File "libzfs.pyx", line 369, in libzfs.ZFS.__exit__
  File "/usr/local/lib/python3.7/site-packages/middlewared/plugins/zfs.py", line 380, in import_pool
    raise CallError(f'Pool {name_or_guid} not found.', errno.ENOENT)
middlewared.service_exception.CallError: [ENOENT] Pool 573962227414056319 not found.
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/middlewared/plugins/pool.py", line 1667, in unlock
    'cachefile': ZPOOL_CACHE_FILE,
  File "/usr/local/lib/python3.7/site-packages/middlewared/main.py", line 1141, in call
    app=app, pipes=pipes, job_on_progress_cb=job_on_progress_cb, io_thread=True,
  File "/usr/local/lib/python3.7/site-packages/middlewared/main.py", line 1081, in _call
    return await self._call_worker(name, *args)
  File "/usr/local/lib/python3.7/site-packages/middlewared/main.py", line 1101, in _call_worker
    return await self.run_in_proc(main_worker, name, args, job)
  File "/usr/local/lib/python3.7/site-packages/middlewared/main.py", line 1036, in run_in_proc
    return await self.run_in_executor(self.__procpool, method, *args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/middlewared/main.py", line 1010, in run_in_executor
    return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
middlewared.service_exception.CallError: [ENOENT] Pool 573962227414056319 not found.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/middlewared/job.py", line 349, in run
    await self.future
  File "/usr/local/lib/python3.7/site-packages/middlewared/job.py", line 385, in __run_body
    rv = await self.method(*([self] + args))
  File "/usr/local/lib/python3.7/site-packages/middlewared/schema.py", line 961, in nf
    return await f(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/middlewared/plugins/pool.py", line 1679, in unlock
    raise CallError(msg)
middlewared.service_exception.CallError: [EFAULT] Pool could not be imported: 2 devices failed to decrypt.

It helps if you give us your hardware, os and pool / vdev details to understand what is happening. Screenshots may help too.

If you can’t post images, browse some other threads and take the Tutorial by the Bot. Your user trust level should go up and allow posting.

TrueNAS-Bot
Type this in a new reply and send to bring up the tutorial, if you haven’t done it already.

@TrueNAS-Bot start tutorial

1 Like

I finally got time to finish the tutorial.

Hope this helps. As you can see the Pools overview shows an old pool whose disks arent in the NAS anymore. Before the power cut it wasnt shown. Is that a clue what went wrong? Maybe the system looks in a wrong file for the pools and their unlock password.

I don’t have a BSD based VM to test the commands right now. Try running the following in the Shell or CLI.

What does this return? Post back using Preformatted Text (</> or Ctrl+e) on toolbar.

zpool status -v

Do you show previous boot environments?


zpool status -v
  pool: freenas-boot
 state: ONLINE
  scan: scrub repaired 0 in 0 days 00:02:17 with 0 errors on Thu Jul  3 03:47:17 2025

config:

        NAME        STATE     READ WRITE CKSUM
        freenas-boot  ONLINE       0     0     0
          da0p2     ONLINE       0     0     0

errors: No known data errors

Where can I check about the previous boot environments? Without checking I am pretty sure that I dont show them.

I don’t know if you have that feature.
Link for documents https://www.truenas.com/docs/files/FreeNAS-11.3-U5-User-Guide_screen.pdf

The newest is from 2021. Is there a high propability that a boot from different selection is damaging my system even more?

Just be patient and wait for posts. I wouldn’t do anything for now. I messaged to try to get someone who knows that version or the Core / BSD versions.

1 Like

@FreeNAS-LinuxUser just to confirm - you’re 100% positive you’re using the correct passphrase here, because the wrong one will mean an inability to decrypt as well.

This is the legacy GELI encryption, so if I recall correctly listing zpool import from the command prompt should show you a potentially importable pool composed of .eli files. Can we see the results of that, just to see if it can show the files present?

Please post the results of the command using Preformatted text (</>) on toolbar or Ctrl+e. It makes for easier reading

Yes I am. I even typed it down in an editor and copy-pasted it in.

Welcome to FreeNAS

Warning: settings changed through the CLI are not written to
the configuration database and will be reset on reboot.

root@freenas[~]# zpool import
root@freenas[~]# 

root@freenas[~]# ls
.bash_history   .gdbinit        .lsof_freenas   .ssh            .zsh-histfile
.bashrc         .k5login        .profile        .warning        .zshrc
.cshrc          .login          .shrc           .zlogin         samba

root@freenas[~]# zpool list
NAME           SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
freenas-boot  29.5G  4.26G  25.2G        -         -      -    14%  1.00x  ONLINE  -
root@freenas[~]# zpool status
  pool: freenas-boot
 state: ONLINE
  scan: scrub repaired 0 in 0 days 00:02:17 with 0 errors on Thu Jul 10 03:47:17 2025
config:

        NAME        STATE     READ WRITE CKSUM
        freenas-boot  ONLINE       0     0     0
          da0p2     ONLINE       0     0     0


errors: No known data errors



root@freenas[~]# zpool iostat
                 capacity     operations    bandwidth
pool          alloc   free   read  write   read  write
------------  -----  -----  -----  -----  -----  -----
freenas-boot  4.26G  25.2G      0      0  7.72K  1.15K

Seems like phyton is the culprit since all initial messages name *.py files to malfunction.
I still dont understand how the gui shows more pools then are actually there and on the other hand the CLI-commands show not a single one.

I think HoneyBadger is on vacation this week. I don’t know if you will get replies from him.

If you are sure you have the correct passphrase, you can try booting to a previous version of TrueNAS core. If that is the same, you can just boot back to your current version the same way.

Do you have the Recovery Key stored elsewhere? I wouldn’t mess with the encryption any more than just testing the previous boot environment.

From 10.2.2.1 Encryption and Recovery Keys in document pdf

The recovery key is an optional keyfile that is generated by FreeNAS®, provided for download, and wiped from the
system. It is designed as an emergency backup to unlock or import an encrypted pool if the passphrase is forgot-
ten or the encryption key is somehow invalidated. This file is not stored anywhere on the FreeNAS® system and
only one recovery key can exist for each encrypted pool. Adding a new recovery key invalidates any previously
downloaded recovery key file for that pool.
Existing encryption or recovery keys can be invalidated in several situations:
• An encryption re-key invalidates all encryption and recovery keys as well as an existing passphrase.
• Using a recovery key file to import an encrypted pool invalidates the existing encryption key and passphrase
for that pool. FreeNAS® generates a new encryption key for the imported pool, but a new passphrase must
be created before the pool can be locked.
• Creating or changing a passphrase invalidates any existing recovery key.
• Adding a new recovery key invalidates any existing recovery key files for the pool.
• Extending a Pool (page 175) invalidates all encryption and recovery keys as well as an existing passphrase.
Be sure to download and securely store copies of the most current encryption and recovery keys. Protect and
backup encryption key passphrases. Losing the encryption and recovery keys or the passphrase can result
in irrevocably losing all access to the data stored in the encrypted pool!