When you have a working HL15 (or other system), where the alias of 1-1 thru 1-x is shown in the houston UI, a drive needing to be replaced may not have the right alias.
While dalias is a great tool, the process is going to force you to remove the drive and replace it. It may or may not cause resilvering again.
I found the python script for dalias is great for the initial setup and in my case, I needed to fix
zpool status MyPool
pool: MyPool
state: ONLINE
scan: resilvered 3.23T in 10:52:57 with 0 errors on Fri May 16 20:21:16 2025
config:
NAME STATE READ WRITE CKSUM
MyPool ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
1-2-part2 ONLINE 0 0 0
1-6-part2 ONLINE 0 0 0
1-1-part2 ONLINE 0 0 0
1-7-part2 ONLINE 0 0 0
ata-ST4000NM0035-1V4107_XXXXXXXX ONLINE 0 0 0
1-5-part2 ONLINE 0 0 0
1-3-part2 ONLINE 0 0 0
1-4-part2 ONLINE 0 0 0
sdj ONLINE 0 0 0
1-8-part2 ONLINE 0 0 0
cache
sdk1 ONLINE 0 0 0
sdl1 ONLINE 0 0 0
I wanted to have slot 1-9 and 1-10 back as the houston UI’s zfs module will not know the status of these two drives (/dev/sdi and /dev/sdj).
If you have /etc/vdev_id.conf with the right content (example from my hl15):
# This file was generated using dalias (2.0.0)
alias 1-1 /dev/disk/by-path/pci-0000:00:17.0-ata-1
alias 1-2 /dev/disk/by-path/pci-0000:00:17.0-ata-2
alias 1-3 /dev/disk/by-path/pci-0000:00:17.0-ata-3
alias 1-4 /dev/disk/by-path/pci-0000:00:17.0-ata-4
alias 1-5 /dev/disk/by-path/pci-0000:00:17.0-ata-5
alias 1-6 /dev/disk/by-path/pci-0000:00:17.0-ata-6
alias 1-7 /dev/disk/by-path/pci-0000:00:17.0-ata-7
alias 1-8 /dev/disk/by-path/pci-0000:00:17.0-ata-8
alias 1-9 /dev/disk/by-path/pci-0000:19:00.0-sas-phy4-lun-0
alias 1-10 /dev/disk/by-path/pci-0000:19:00.0-sas-phy5-lun-0
alias 1-11 /dev/disk/by-path/pci-0000:19:00.0-sas-phy6-lun-0
alias 1-12 /dev/disk/by-path/pci-0000:19:00.0-sas-phy7-lun-0
alias 1-13 /dev/disk/by-path/pci-0000:19:00.0-sas-phy0-lun-0
alias 1-14 /dev/disk/by-path/pci-0000:19:00.0-sas-phy1-lun-0
alias 1-15 /dev/disk/by-path/pci-0000:19:00.0-sas-phy2-lun-0
and if you have the /dev/disk/by_vdev/ working
ls -la /dev/disk/by-vdev/
total 0
drwxr-xr-x 2 root root 720 May 17 10:47 .
drwxr-xr-x 9 root root 180 May 17 10:47 ..
lrwxrwxrwx 1 root root 9 May 17 11:49 1-1 -> ../../sda
lrwxrwxrwx 1 root root 9 May 17 11:49 1-10 -> ../../sdj
lrwxrwxrwx 1 root root 10 May 17 11:49 1-10-part1 -> ../../sdj1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-10-part9 -> ../../sdj9
lrwxrwxrwx 1 root root 9 May 17 11:49 1-11 -> ../../sdk
lrwxrwxrwx 1 root root 10 May 17 11:49 1-11-part1 -> ../../sdk1
lrwxrwxrwx 1 root root 9 May 17 11:49 1-12 -> ../../sdl
lrwxrwxrwx 1 root root 10 May 17 11:49 1-12-part1 -> ../../sdl1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-1-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-1-part2 -> ../../sda2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-2 -> ../../sdb
lrwxrwxrwx 1 root root 10 May 17 11:49 1-2-part1 -> ../../sdb1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-2-part2 -> ../../sdb2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-3 -> ../../sdc
lrwxrwxrwx 1 root root 10 May 17 11:49 1-3-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-3-part2 -> ../../sdc2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-4 -> ../../sdd
lrwxrwxrwx 1 root root 10 May 17 11:49 1-4-part1 -> ../../sdd1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-4-part2 -> ../../sdd2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-5 -> ../../sde
lrwxrwxrwx 1 root root 10 May 17 11:49 1-5-part1 -> ../../sde1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-5-part2 -> ../../sde2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-6 -> ../../sdf
lrwxrwxrwx 1 root root 10 May 17 11:49 1-6-part1 -> ../../sdf1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-6-part2 -> ../../sdf2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-7 -> ../../sdg
lrwxrwxrwx 1 root root 10 May 17 11:49 1-7-part1 -> ../../sdg1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-7-part2 -> ../../sdg2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-8 -> ../../sdh
lrwxrwxrwx 1 root root 10 May 17 11:49 1-8-part1 -> ../../sdh1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-8-part2 -> ../../sdh2
lrwxrwxrwx 1 root root 9 May 17 11:49 1-9 -> ../../sdi
lrwxrwxrwx 1 root root 10 May 17 11:49 1-9-part1 -> ../../sdi1
lrwxrwxrwx 1 root root 10 May 17 11:49 1-9-part9 -> ../../sdi9
Then you can do a simple zpool export
remove the /etc/zfs/zpool.cache
then use zpool import -d /dev/disk/by-vdev MyPool
everything will be back to how the HL15 was originally configured (using the slots)
zpool status
pool: MyPool
state: ONLINE
scan: resilvered 3.23T in 10:52:57 with 0 errors on Fri May 16 20:21:16 2025
config:
NAME STATE READ WRITE CKSUM
MyPool ONLINE 0 0 0
raidz3-0 ONLINE 0 0 0
1-2-part2 ONLINE 0 0 0
1-6-part2 ONLINE 0 0 0
1-1-part2 ONLINE 0 0 0
1-7-part2 ONLINE 0 0 0
1-9 ONLINE 0 0 0
1-5-part2 ONLINE 0 0 0
1-3-part2 ONLINE 0 0 0
1-4-part2 ONLINE 0 0 0
1-10 ONLINE 0 0 0
1-8-part2 ONLINE 0 0 0
cache
1-11-part1 ONLINE 0 0 0
1-12-part1 ONLINE 0 0 0
errors: No known data errors
Hope this is helpful. For me this saved me from having to remove/insert each drive.
I am working on a minor python script to run a series of commands to stop the needed services, unmount the needed disks, to then export the Pool, remove the zpool cache files, run a few udevadm commands, zpool import the pool, start all the services backup, etc