Error: Import encrypted pool (FreeNAS 11.2U8 ==> 12.0 U6.1)

MrHans

Dabbler
Joined
May 12, 2019
Messages
12
Hello,

I have a primary NAS running 11.2 U8 where I have created a backup of important data to a single, encrypted 1-disk pool using zfs replication locally. I have exported this pool, removed the drive and shipped it to a remote location to set up for remote ZFS replication as an off-site backup.

The remote system had Windows10 installed and so I chose to attempt running TrueNAS CORE 12.0 U6 in a Virtualbox VM with the disk passed through. Yes: :eek:. I am fully aware that TrueNAS should be run on bare metal and running it in a VM is discouraged.

That being said, having gone through all kinds of other troubles not related to TrueNAS, I am currently having issues importing this single-dive, encrypted pool on the remote system that I believe is now an issue related directly to TrueNAS.

I can see the drive and the partition,
Code:
geom disk list
...
2. Name: ada1p2
   Mediasize: 9998683779072 (9.1T)
   Sectorsize: 512
   Stripesize: 0
   Stripeoffset: 2147549184
   Mode: r0w0e0
...


However, when trying to import the pool in the GUI, although the drive partition shows up, the following error is thrown:
1636998201598.png

Code:
:
Error: Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/middlewared/job.py", line 367, in run
    await self.future
  File "/usr/local/lib/python3.9/site-packages/middlewared/job.py", line 405, in __run_body
    rv = await self.middleware.run_in_thread(self.method, *([self] + args))
  File "/usr/local/lib/python3.9/site-packages/middlewared/utils/run_in_thread.py", line 10, in run_in_thread
    return await self.loop.run_in_executor(self.run_in_thread_executor, functools.partial(method, *args, **kwargs))
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.9/site-packages/middlewared/schema.py", line 979, in nf
    return f(*args, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/middlewared/plugins/disk_/encryption_freebsd.py", line 49, in decrypt
    raise CallError(f'The following devices failed to attach: {", ".join(failed)}')
middlewared.service_exception.CallError: [EFAULT] The following devices failed to attach: gptid/123....


Having had issues with GUI-mounting before, I also tried using geli from the command line.
Code:
geli attach -k geli-POOL.key /dev/ada1p2
Enter passphrase: ****
geli: Wrong key for ada1p2.
geli: There was an error with at least one provider.


Now, I meticulously keep copies of keys and both the key are password are correct. Despite the message saying "wrong key for ada1p2". (Why does the GUI not say the same?)

Troubleshooting so far:

Assuming that both the key and password are correct, and the drive itself is intact, would someone have some pointers on what this issue relates to and if possible, how to proceed solving it?
 

MrHans

Dabbler
Joined
May 12, 2019
Messages
12
To conclude for anyone else having a similar issue.

I had another go at this problem with fresh eyes.
Trying everything one more time I simply omitted attaching a geli.key file and provided only the password to attach the pool. This worked and allowed me to attach the encrypted pool. It is working fine ever since.

So the "geli: Wrong key for ada1p2." message indeed refers to the geli.key being wrong, and the correct key is in fact no key.
 
Top