Richard Laager [2016-04-20 0:47 -0000]:
> In parallel with mounting fstab sounds reasonable, since mounting filesystems
> from fstab and mounting filesystems from ZFS (which happens by default upon
> import) are analogous.
Ah, I see. So do file systems from ZFS have a separate equivalent to
/etc/fstab?
> But I doubt it would be performant. Running
> zpool import examines all devices
> [...]
> Additionally, if you're responding to device events one-by-one, for pools with
> more than one disk, there's a question of whether you should import the pool
> when disks are missing
I think these two make it sufficiently "device unspecific" to make a
simple "call this in an udev rule" impractical.
> I think the best behavior
> is to import a pool:
> once all devices are present ||
It's really best to completely drop the idea of "all devices". It just
doesn't work in a world where you even can (and do) hotplug PCI
devices (e. g. to replace a faulty disk in a server). Thinking in
these terms also quickly gets you down into a rabbit hole of race
conditions and too strong locks.
> (once sufficient devices are present &&
That sounds like the right approach. That's more or less what LVM or
mdadm are doing. For some RAID modes in mdadm it's possible that you
already assemble a device before all members have been detected (e. g.
RAID-1 with 3 redundant disks), but LVM gets along with the third
member being added afterwards.
> a short timeout has expired with no new disks arriving)
That again is a part I strongly recommend to drop, as it's not
well-defined.
Hello Richard,
Richard Laager [2016-04-20 0:47 -0000]:
> In parallel with mounting fstab sounds reasonable, since mounting filesystems
> from fstab and mounting filesystems from ZFS (which happens by default upon
> import) are analogous.
Ah, I see. So do file systems from ZFS have a separate equivalent to
/etc/fstab?
> But I doubt it would be performant. Running
> zpool import examines all devices
> [...]
> Additionally, if you're responding to device events one-by-one, for pools with
> more than one disk, there's a question of whether you should import the pool
> when disks are missing
I think these two make it sufficiently "device unspecific" to make a
simple "call this in an udev rule" impractical.
> I think the best behavior
> is to import a pool:
> once all devices are present ||
It's really best to completely drop the idea of "all devices". It just
doesn't work in a world where you even can (and do) hotplug PCI
devices (e. g. to replace a faulty disk in a server). Thinking in
these terms also quickly gets you down into a rabbit hole of race
conditions and too strong locks.
> (once sufficient devices are present &&
That sounds like the right approach. That's more or less what LVM or
mdadm are doing. For some RAID modes in mdadm it's possible that you
already assemble a device before all members have been detected (e. g.
RAID-1 with 3 redundant disks), but LVM gets along with the third
member being added afterwards.
> a short timeout has expired with no new disks arriving)
That again is a part I strongly recommend to drop, as it's not
well-defined.
Thanks!