Replacing faulty disk error

I posted this to the Reddit forum and it was suggested I post this here…I have added some more relevant info.

Hi All,

I am a Noob at this stuff, I installed TrueNAS about 18 months ago as a plex server and it has worked perfectly ever since… until I have had a disk failure. I’ve watched the tutorials on Youtube and read some of the threads here. But the crux of the matter is there is an error when I choose to replace the disk. I can’t see a way around it.

I get this error and I can’t proceed, I simply choose replace in the vdev.

AttributeError ‘NoneType’ object has no attribute ‘replace’

So I have no idea how to fix this. From what I have gleaned there is a python error of some kind, but I’ll be honest I had to look up what python was. So I’m at a bit of a loss. Can anyone help and Explain it like I’m five?

configured for Four 4TB Disks in Raidz1 I’m using 26.0.0 (Beta 2) which was an accidental upgrade, ie I didn’t realise it was a Beta version until it was installed. But this was working fine for a few weeks before the disk failed.

Here is the Log file

Error Type: AttributeError

Trace: Traceback (most recent call last):

File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 578, in run

await self.future

File “/usr/lib/python3/dist-packages/middlewared/job.py”, line 622, in __run_body

rv = await self.method(*args)

^^^^^^^^^^^^^^^^^^^^^^^^

File “/usr/lib/python3/dist-packages/middlewared/api/base/decorator.py”, line 209, in wrapped

result = await func(*args)

^^^^^^^^^^^^^^^^^

File “/usr/lib/python3/dist-packages/middlewared/plugins/pool_/replace_disk.py”, line 69, in replace

if not (found := await self.middleware.call(

^^^^^^^^^^^^^^^^^^^^^^^^^^^

‘pool.find_disk_from_topology’, options[‘label’], pool, {‘include_siblings’: True}

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

)):

^

File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1242, in call

return await self._call(

^^^^^^^^^^^^^^^^^

…<2 lines>…

)

^

File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 924, in _call

return await self.run_in_executor(

^^^^^^^^^^^^^^^^^^^^^^^^^^^

…<4 lines>…

)

^

File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 804, in run_in_executor

return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

File “/usr/lib/python3.13/concurrent/futures/thread.py”, line 59, in run

result = self.fn(*self.args, **self.kwargs)

File “/usr/lib/python3/dist-packages/middlewared/plugins/pool_/info.py”, line 32, in find_disk_from_topology

if label in (c[‘path’].replace(‘/dev/’, ‘’), c[‘guid’]):

^^^^^^^^^^^^^^^^^

AttributeError: ‘NoneType’ object has no attribute ‘replace’

Have you tried booting up the previous version?

In the TrueNAS GUI, go to System, Boot to bring up Boot Environments. You want to make your last 25.10 version active by clicking on the ‘star with check mark’ icon. Reboot and then go to Update in the GUI. Change your update train drop down to General Availability and you won’t see any more updates for the Early Adopter train.

You need to give us full hardware details and what your pool layout is.
Browse some other threads and do the Tutorial by the Bot to get your forum trust level up and post images and links

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

2 Likes

Thank you, I wasn’t sure how to go backwards or if it was possible. Flipped back to 25.10.3, then updated to 25.10.4. Chose replace, and it is currently resilvering!

Thanks for taking time out of your day to help. Much appreciated.

I hadn’t, but I took on what another user said and tried this and it is currently resilvering.

Thank you

1 Like