Unable to create new Pool (non uniqe serial nr. in existing pool)

Hello

I am having the issue, that I cannot create a new pool, since my EXISTING Pool has non-unique Serial-Numbers.

About my setup (home-lab):
TrueNas (Scale: 24.10.1) runs virtualized on XCP-NG.
The disks are just passed through, but not fully managed by TrueNas (yet).
I have a raidZ2 with 8x8TB.

Since one disks bad smart values, and the pool-size is extending 80%, I wanted to upgrade the pool to 8x16TB. The new disks are conneced via a hba, that is passed through to the TrueNas VM.
I want to create a new Pool, and replicate my current pool.

When I want to create a new Pool, I get the error message, that it contains non-unique serial-numbers, but with the old ids!
I want to create a pool with sda, sdb, …, sdh, but get the error:
Disks have duplicate serial numbers: ‘’ (xvda, xvdb, xvdc, xvde, xvdf, xvdg, xvdh, xvdi, xvdj).

my disks:

I seem to be unable to add a screenshot that shows, that all sda…sdh have an uniqe serial number.

root@freenas[/]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 14.6T 0 disk
sdb 8:16 0 14.6T 0 disk
sdc 8:32 0 14.6T 0 disk
sdd 8:48 0 14.6T 0 disk
sde 8:64 0 14.6T 0 disk
sdf 8:80 0 14.6T 0 disk
sdg 8:96 0 14.6T 0 disk
sdh 8:112 0 14.6T 0 disk
sr0 11:0 1 1024M 0 rom
xvda 202:0 0 30G 0 disk
├─xvda1 202:1 0 512K 0 part
└─xvda2 202:2 0 30G 0 part
xvdb 202:16 0 7.3T 0 disk
├─xvdb1 202:17 0 2G 0 part
└─xvdb2 202:18 0 7.3T 0 part
xvdc 202:32 0 7.3T 0 disk
├─xvdc1 202:33 0 2G 0 part
└─xvdc2 202:34 0 7.3T 0 part
xvde 202:64 0 7.3T 0 disk
├─xvde1 202:65 0 2G 0 part
└─xvde2 202:66 0 7.3T 0 part
xvdf 202:80 0 7.3T 0 disk
├─xvdf1 202:81 0 2G 0 part
└─xvdf2 202:82 0 7.3T 0 part
xvdg 202:96 0 7.3T 0 disk
├─xvdg1 202:97 0 2G 0 part
└─xvdg2 202:98 0 7.3T 0 part
xvdh 202:112 0 7.3T 0 disk
├─xvdh1 202:113 0 2G 0 part
└─xvdh2 202:114 0 7.3T 0 part
xvdi 202:128 0 7.3T 0 disk
├─xvdi1 202:129 0 2G 0 part
└─xvdi2 202:130 0 7.3T 0 part
xvdj 202:144 0 7.3T 0 disk
├─xvdj1 202:145 0 2G 0 part
└─xvdj2 202:146 0 7.3T 0 part
root@freenas[/]#

Is there a way, I can create the Pool, despite of having non-unique IDs?
Especially, since I want to get rid of them!

Best regards
Nico

If you want to have a likely chance of pool failure; probably can force it somehow.

How are you passing these drives through? Did you get an HBA & pass it through to truenas? Or did you pass through the controller on the motherboard?

If you’re passing through individual drives, you’re already in the danger zone.

In my current pool, the disks are passed through like in this tutorial:
https://www.zerodispersion.com/xenserver-whole-disk-passthrough/
(Sorry, I am not allowed to use links).
TLDR:
XCP-NG has a storage-repository, in which the disks are symlinked to.
This allows me to use the drives, but not manage them (i.e. smar values etc).

The new Pool has its own HBA, which is completly passed to the vm.

If I am risking data-loss by forcing it, maybe I could starting truenas from a stick and create the pool on an other system, than importing it back on my Nas-System. Not sure if this is more feasable or more hacky…

I could be way in the wrong here, but even the naming convention sounds like TrueNAS is identifying the drives as virtual devices, which can/will cause issues in the long run since ZFS hates not having full control

Since you got an HBA, why not isolate it from the hypervisor, pass through the HBA to TrueNAS, and then TrueNAS should have full control of the drives since (if I’m not way off point here) the hypervisor won’t even see the disks exist while ZFS will finally be happy having full control.

I’d argue this is also easier to implement than the link you sent, since those steps seem to exist for folks who don’t have an HBA to passthrough.

I agree with @Fleshmauler as it is not seeing the physical drive but rather a virtual drive, unless you are using substandard USB adapters where the adapter assign a number and it is the same number in each adapter. Seen that too.

1 Like

I Read the Whole Disk Pass-through and yes, that is not the same as passing through the entire controller. I have that same iuues in ESXi if i Pass-through a drive. I don’t know if your hypervisor allows you to assign serial numbers in your vm.

I agree, this is also where I want to go.
I want to get rid of all the vdisks, and use the new one!
But TrueNas does not let me create a pool with the new Drives (that are comming from the pass-through HBA), since it detects other drives with non-unique serial-numbers.

My plan was to:

  1. Having my current pool (CurrentPool), with non-unique serial-nrs and virtual disks (xvdb…xvdj)
  2. Create a new Pool (NewPool), with the HBA that is passed to the vm (sda…sdh)
  3. Replicate the Data from CurrentPool to NewPool
  4. Take down CurrentPool

But since I cannot create the NewPool (due to errors concerning the CurrentPool (xvda…xvdj), when attempting to create it), I am a little out of ideas how to best continue.

OH! I get it now.

zpool create #namehere raidz## #disk1 #disk2 #etc 

Does cli still have you the same thing? Remove # and insert relevant values for raidz2/3 (or nothing for raidz1), and remove #diskwhatever and insert sda/b/etc as needed

1 Like

Thank you for the hint, but L found this answer here, that is preventing me a little from feeling confident with that solution:

I try to copy the data to a new trueNas vm, if that turns out to be tiedious, I might try the zpool create approach.