Comment 5 for bug 1629824

Revision history for this message
Richard Laager (rlaager) wrote : Re: lxd should explicitly create "containers" and "images" datasets on ZFS

What in particular is problematic about the solution I have proposed?

The code needs testing, and it should be converted to a loop, and any other datasets need to be added to the list. But what is wrong in concept?

A sufficiently educated admin could create everything perfectly for lxd, but why should they have to when lxd can trivially do it for them?

> If the user manually creates a pool, it's their responsability to
> pass -m none.

It's unreasonable to expect the admin to make their pool use mountpoint=none. That's not a normal ZFS configuration. It's not the ZFS default. It's not how root pools work on any OS. The only place I've seen that approach is with pools lxd creates.

> I'd probably just have LXD force set mountpoint=none for whatever
> dataset its root is at and let the rest inherit.

It's more unreasonable to force their pool to mountpoint=none. If someone runs `lxd init`, gives it their existing pool, and lxd *breaks their system*, that's not okay.

If the practice of lxd was to create another dataset level, then it could force that level to mountpoint=none. That would be a reasonable solution. For example, if I pass in "pool", then lxd could create "pool/lxd" with mountpoint=none and then create "pool/lxd/containers/..." and "pool/lxd/images/..." under there.

However, while that is a fine choice, that's not how lxd is doing things now, and it would be inconsistent with dedicated lxd pools. The solution I'm proposing works in all three supported scenarios and does not break existing users.

> That wouldn't be quite enough, LXD creates a number of other paths when
> archiving images, mounting snapshots, doing live migration, ...

This proves my point. How does the admin have any idea which datasets lxd is going to create, such that they can pre-create all those datasets with the right settings? I've spent several hours testing lxd, and multiple back-and-forth conversations with you, and I'm still apparently unaware of all the datasets lxd can use.

Even if an admin is fully aware of everything lxd uses today, at any time the next version of lxd might create something new.