Compression on Jails?

Volts

Patron
Joined
May 3, 2021
Messages
210
I appreciate the level of detail and effort you're putting into this.

If I was product manager for this, I'd chop it into two pieces and prioritize them separately.

1) Remove the compression override in iocage. This is unexpected behavior. I'd call it a minor defect.
2) Add per-jail and create-time compression settings, including the UI/UX, etc.

But then I wouldn't ever commit time or energy towards #2. It would go in the backlog graveyard.
 
Joined
Oct 22, 2019
Messages
3,641
I juggled in my mind how to present this as a "Suggestion" in the Jira ticket. I went with "Leave it open-ended enough that the team at iXsystems can interpret what makes the most sense and can be implemented to compliment the rest of the 'appliance'."


1) Remove the compression override in iocage. This is unexpected behavior. I'd call it a minor defect.
2) Add per-jail and create-time compression settings, including the UI/UX, etc.

But then I wouldn't ever commit time or energy towards #2. It would go in the backlog graveyard.
What I didn't make clear in this discussion is that #2 works hand-in-hand with number #1.


Rather than make references to LZ4, I could have better worded it:
"Leave the compression to the default of Inherit, but add a drop-down menu to allow the user to select the jail's dataset compression."
bedd18ce-e410-4f5d-86f2-0a0d49fcf6eb.png



It's like thinking of a jail not only as an application, but also as a dataset.

Whenever you create a new dataset, what does the compression default to? Inherit. This makes sense, and it's intuitive. But you're also given the option to choose something else with a drop-down menu.

The drop-down menu option is there when you create a new dataset. I think it should also be an option for creating a new jail.

In fact, creating a new jail literally creates a new dataset. :smile:


Jail = Dataset



Here's a way to consider #1 and #2 working together, and why I think they're both needed:

Point #1 might be seen as a defect that needs to be fixed. It's a separate issue. Let's say it gets fixed.

Awesome! Now when you use iocage for the first time, whatever compression your top-level root dataset uses, iocage (and all of its children and jails) will inherit this by default.

ZSTD? All will inherit ZSTD.
LZ4? All will inherit LZ4.
ZSTD-9? All will inherit ZSTD-9.

Here's where point #2 comes in (which is essentially my "suggestion")...

I have my top-level root dataset and most of my datasets using LZ4 compression. So what happens in regards to iocage and jails if only point #1 is fixed?

LZ4? All jails will inherit LZ4. :confused:

But I don't want to accept all my jails to inherit LZ4.
Most of my jails I want to set to ZSTD, and a couple of them as ZSTD-9, while still keeping my pool's root dataset (and other children) at LZ4.

What solves that? A drop-down menu to select the compression when creating a new jail, which is no different than the drop-down menu when creating a new dataset.


I already know that you can set the compression of your top-level root dataset (back and forth), as well as your iocage dataset (back and forth) as a "hacky" way to arbitrarily manipulate newly created jails.

But TrueNAS is an appliance that shouldn't require these acrobatics; thus, an additional drop-down menu (that already exists for datasets) will not add clutter. Hence, this discussion and feature request. :cool:

(And why a drop-down menu for compression, of all things? Because jails are particularly highly compressible datasets that are predominantly read from. ZSTD is tailored for such datasets.)
 
Last edited:
Top