[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: btrfs compression by default



Hi Jiří, Vendula, all,

On Tue, 2021-02-09 at 12:12 +0100, Vendula Poncova wrote:
> On Tue, Feb 9, 2021 at 10:42 AM <jkonecny redhat com> wrote:
> > 
> > Hi everyone,
> > 
> > I see a few options for this. First is to add this directly to
> > blivet
> > library as you pointed out already. However, I don't think blivet
> > developers would be happy about that because they are trying to be
> > as
> > much as possible general purpose library and this change is really
> > just
> > about Anaconda.
> > 
> > Another option seems to be to modify Anaconda code directly.
> > Unfortunately, I can't tell from top of my mind how hard that would
> > be
> > but still seems like the easiest solution.
> > 
> > However, the best approach which I can think of is to add something
> > like that to our configuration files. Benefit would be that another
> > modifications like that could be done easily in the future. That is
> > of
> > course for a discussion for the Anaconda team because it could be
> > pretty hard to implemented this in some common form.
> > 
> > Vendy, Vojta, do you have some better ideas or could you tell us
> > something more about my ideas above?
> > 
> > Best Regards,
> > Jirka
> > 
> > On Tue, 2021-02-09 at 01:18 -0500, Neal Gompa wrote:
> > > On Tue, Feb 9, 2021 at 1:09 AM Michel Alexandre Salim
> > > <michel michel-slm name> wrote:
> > > > 
> > > > Hi,
> > > > 
> > > > On Mon, 2021-02-08 at 21:02 -0700, Chris Murphy wrote:
> > > > > Hi,
> > > > > 
> > > > > This is in regards to this Fedora 34 change:
> > > > > https://fedoraproject.org/wiki/Changes/BtrfsTransparentCompression#Scope
> > > > > 
> > > > > The gist is to do 'mount -o compress=zstd:1' anytime Btrfs is
> > > > > used,
> > > > > whether Destination Installation>Automatic or Custom or
> > > > > Advanced-Custom. Apply it during the installation, and add it
> > > > > to
> > > > > /etc/fstab.
> > > > > 
> > > > > Somehow I got confused thinking that autopart supports --
> > > > > fsoptions,
> > > > > and that would be the way to do this. But (a) --fsoptions
> > > > > isn't
> > > > > supported with autopart, and (b) it wouldn't be a universal
> > > > > approach
> > > > > anyway. And we want this to be consistent. Now I'm thinking
> > > > > it
> > > > > needs
> > > > > to go somewhere in:
> > > > > 
> > > > > https://github.com/storaged-project/blivet/blob/3.4-devel/blivet/devices/btrfs.py
> > > > > 
> > > > > Am I on the right track, or does it need to go somewhere
> > > > > else, or
> > > > > in
> > > > > addition to that?
> > > > > 
> > > > (I'm one of the change owners, and trying to figure this out
> > > > with
> > > > Chris).
> > > > 
> > > > Ideally we have a solution that is configurable - i.e. this is
> > > > exposed
> > > > via a kickstart command (and probably entailing changes in
> > > > Anaconda
> > > > and
> > > > pykickstart), but if that is not possible, or require a lot of
> > > > rework
> > > > (which we can try to work on), if we are willing to carry a
> > > > patch
> > > > for
> > > > blivet or some other component to override the behavior just
> > > > for
> > > > Fedora
> > > > 34, what's the best way of achieving that?
> > > > 
> > > > Btrfs is probably the only filesystem with built-in compression
> > > > that we
> > > > potentially care about, so designing an interface to expose
> > > > this
> > > > functionality might be an overkill -- but we're not sure.
> > > > 
> > > 
> > > Eventually, VDO might get integrated into the mainline tree, so
> > > having
> > > the interface which could be used for LVM compression through VDO
> > > wouldn't be too bad.
> > > 
> > > 
> > > 
> > 
> > 
> 
> Hello!
> 
> The change says: "On variants using btrfs as the default filesystem,
> enable transparent compression using zstd." It means that the
> compression has to be configurable per product, so we need to add a
> new configuration option to the Anaconda configuration files
> (something like btrfs_compression_enabled = True). I guess you
> planned
> to use interactive-defaults.ks, but we are going to replace this file
> with the configuration files anyway.
> 
> I have checked the Blivet's code and we might be able to redefine the
> _mount_class attribute of the BTRFS class. The mount class defines
> default mount options. That should be enough to fix all partitioning
> methods. What do you think, Vojta?
> 
> Vendy
> 
> _______________________________________________
> Anaconda-devel-list mailing list
> Anaconda-devel-list redhat com
> https://www.redhat.com/mailman/listinfo/anaconda-devel-list
> 

I took an initial stab at this -- would this be the way to achieve this
by overriding `_mount_class` in Blivet only?

https://github.com/storaged-project/blivet/pull/930 (for 3.4-devel)
https://github.com/storaged-project/blivet/pull/931 (for 3.3-devel)

Presumably this might be too specific to get merged upstream, but could
be something we can apply as patches against Fedora's python-blivet RPM
while we work out a more generic solution.

Vendula: is the more generic configuration mechanism supposed to work
like this?

- specify in an Anaconda config file that we want to override some
options (which file would this be?)
- if this flag is set, when Anaconda tells Blivet it wants a Btrfs
filesystem, override `_mount_class` (so the code for the new class can
live in Anaconda but subclasses a Blivet class)

There's a further complication: Chris just informed me that on BIOS
systems, space is more of a constraint so the zstd module is not part
of GRUB ... meaning we have to handle these two scenarios:

- if /boot is a directory on a / btrfs file system, we need to override
the compression property for it before any files get written there,
*or* defragment the files in %post
- if /boot is a separate btrfs file system, we need to make sure we
don't compress it so we might need to either use a separate
BTRFSBootMount class, or use the standard FSMount, but also somehow
prevent BTRFSMount to be used if the mount point is /boot

Oh what a tangled web we weave... thoughts on all this? And thanks for
the useful pointers,

-- 
Michel Alexandre Salim
profile: https://keyoxide.org/michel michel-slm name
chat via email: https://delta.chat/
GPG key: 5DCE 2E7E 9C3B 1CFF D335 C1D7 8B22 9D2F 7CCC 04F2

Attachment: signature.asc
Description: This is a digitally signed message part


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]