I am only starting to get familiar with openzfs 2.2.0
on Linux (Ubuntu kernel 6.5) and immediately ran into something strange. A symlink I was expecting to point to a zvol block device.. was pointing to a partition on that block device. While the zfs-create manpage seems fairly unambiguous that /dev/zvol/path
refers to the path
in the ZFS namespace.
What I wanted to see:
/dev/zvol/pool/group/srv -> ../../../zd0/dev/zvol/pool/group/srv-part1 -> ../../../zd0p1/dev/zvol/pool/group/srv-part14 -> ../../../zd0p14/dev/zvol/pool/group/srv-part15 -> ../../../zd0p15/dev/zvol/pool/group/srv-part16 -> ../../../zd0p16
What I did see, once (not reproducible):
/dev/zvol/pool/group/srv -> ../../../zd0p16
What I saw after running partprobe
(note: symlink name of 4th partition):
/dev/zvol/pool/group/srv -> ../../../zd0/dev/zvol/pool/group/srv-part1 -> ../../../zd0p1/dev/zvol/pool/group/srv-part14 -> ../../../zd0p14/dev/zvol/pool/group/srv-part15 -> ../../../zd0p15/dev/zvol/pool/group/srv-part3 -> ../../../zd0p16
Before I go on to the actual problem I was wanting to look into - how well zfs
works for me when multiple zvol each contain identical partition tables (forcing Linux & udev to deal with duplicate identifiers) - I would like to understand what the precise rules for managing these symlinks are and what level of control I have to make such symlinks be provisioned the way I expect them to work.
Or maybe whatever has happened is what I should want, or the best I can get? And I just fail to understand which synchronization steps and what type of device files symlinks I should be using if I mean to reliably access a device file containing partition 16
of the zfs pool
volume I named srv
?