I have Freenas running in a VM in XCP-NG. I've followed the guides and I've dedicated a SATA controller to it using PCI-passthrough. Freenas correctly discovers its boot disk, which is virtual, and two physical disks that are connected through the SATA controller. Unfortunately, Freenas identifies both the virtual boot disk and the first physical disk as ada0.
Here's what I get when I run
geom disk list
Geom name: ada0 Providers: 1. Name: ada0 Mediasize: 8589934592 (8.0G) Sectorsize: 512 Mode: r1w1e2 descr: (null) ident: (null) rotationrate: unknown fwsectors: 0 fwheads: 0 Geom name: cd0 Providers: 1. Name: cd0 Mediasize: 0 (0B) Sectorsize: 2048 Mode: r0w0e0 descr: QEMU QEMU DVD-ROM ident: (null) rotationrate: unknown fwsectors: 0 fwheads: 0 Geom name: ada0 Providers: 1. Name: ada0 Mediasize: 4000787030016 (3.6T) Sectorsize: 512 Stripesize: 4096 Stripeoffset: 0 Mode: r1w1e2 descr: WDC WD40EZRZ-00WN9B0 lunid: 50014ee20d58de88 ident: WD-WCC4E5SLVZV7 rotationrate: 5400 fwsectors: 63 fwheads: 16 Geom name: ada1 Providers: 1. Name: ada1 Mediasize: 4000787030016 (3.6T) Sectorsize: 512 Stripesize: 4096 Stripeoffset: 0 Mode: r1w1e2 descr: WDC WD40EZRX-22SPEB0 lunid: 50014ee2b6e06d20 ident: WD-WCC4E4EN0Y9S rotationrate: 5400 fwsectors: 63 fwheads: 16
As you can see, ada0 appears twice. This is wreaking all kinds of havoc with ZFS, which core dumps if I run
zpool import or make any attempt to load the existing pool on the physical disks.
Some things that I've learned during my research into this.
If I run Linux instead of Freenas, the disks are detected as xvda, sda and sdb.
If I change the position of the boot disk to 2 instead of 0, it becomes ada2 and pool import works but this isn't feasible since I plan to have several more physical disks.
I can't tell XCP-NG to assign the boot disk some high number that won't conflict with any physical disks because then the VM won't boot. It appears that the boot disk needs to be in position 3 or lower.
In a youtube video, someone else who's done this used a SAS controller instead and the physical disks were labelled da0, da1, etc., avoiding the conflict. - https://www.youtube.com/watch?v=yrRLm_iHkRM
Is there any way I can force Freenas to number the disks from the second controller differently? Can I force it to use da0? Can I force it to start at a different offset, like ada1? Can I trick it into giving the virtual disk a different device name? Can I get XCP-NG to boot from a disk at an arbitrary position? Am I just stuck unless I buy a SAS controller?