Hello!  I think I should inform this list about my choices so far:

Em [2021-12-16 qui 14:13:05-0300], Jorge P. de Morais Neto escreveu:

> Should I use a backported kernel as Btrfs [wiki][] recommends?  I worry
> that bullseye-backports comes from Debian testing with poor security.

I'm just using bullseye's kernel (5.10 LTS).

> For lifetime and space saving, I intend to install Debian to the SSD
> with compress-force=zstd:12, but then adopt compress-force=zstd.  Thus
> the installation will be slow---I'll do something else while the
> installer works---but the installed system will be efficient, right?

I'm still using compress=zstd:12 and it's performing well.  Notice I
went from "compress-force=zstd:12" to just "compress=zstd:12".  That is
because of:

    Using the forcing compression is not recommended, the heuristics are
    supposed to decide that and compression algorithms internally detect
    incompressible data too.[1]

    Btrfs contains an internal heuristics that determines if some data
    is compressible so that it doesn't try to compress data that isn't
    compressible as this wastes CPU time.  The compress-force mount
    option bypasses this heuristics in order to gain better compression
    ratios.  A downside is that this increases fragmentation with
    non-compressible files.[2]

1: https://btrfs.readthedocs.io/en/latest/Compression.html "Compression —
   BTRFS documentation"
2: https://wiki.tnonline.net/w/Btrfs/Compression#The_compress-force_mount_option
   "Btrfs/Compression - Forza's ramblings"

In the near future I intend to reduce this strong compression level (12)
to something more usual, in order to reduce power usage.

> Is fragmentation a concern?  Is the [Gotchas][] article accurate?

I now have little to worry about fragmentation, because:

1. I dedicated a raw partition to my qemu-KVM virtual machine, bypassing
   Btrfs.
2. I moved the caches of ungoogled-chromium, GNU IceCat, Firefox,
   Evolution and GNU Guix to the HDD, because they (especially the web
   browser caches) were writing too much temporary data to the SSD.
   Thus, if they ever become too fragmented, I can now just defrag them,
   without the danger of wearing the SSD.
3. I made a script to find heavily fragmented files (using compsize's
   output) and so far I have nothing to worry about.

> ** Subvolumes

I read https://en.opensuse.org/SDB:BTRFS and laid out subvolumes
according to this fstab excerpt:

LABEL=SSD /                  btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@rootfs      0       0
LABEL=SSD /var/cache         btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-cache   0       0
LABEL=SSD /var/backups       btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-backups 0       0
LABEL=SSD /var/mail          btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-mail    0       0
LABEL=SSD /var/spool         btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-spool   0       0
LABEL=SSD /var/tmp           btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-tmp     0       0
LABEL=HDD /var/log           btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@var-log     0       0
LABEL=SSD /var/lib/libvirt/images btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@libvirt-images 0 0
LABEL=HDD /var/cache/apt/archives btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@apt-archives 0 0
LABEL=HDD /root              btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@~root       0       0
LABEL=SSD /home              btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@home        0       0
LABEL=SSD /home/cache        btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@home-cache  0       0
LABEL=HDD /home-HDD          btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@home        0       0
LABEL=HDD /home-HDD/cache    btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@home-cache  0       0
LABEL=SSD /gnu               btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@guix-store  0       0
LABEL=SSD /var/guix          btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@guix-var    0       0
LABEL=SSD /usr/local         btrfs 
noatime,space_cache=v2,compress=zstd:12,subvol=@usr-local   0       0

Rationale:
1. In the future I could snapshot @rootfs before certain system
   operations (say, large upgrades).  If I then rollback the system to a
   snapshot, I'll still want the latest logs, user data, cache,
   libvirt-images etc., so these should be outside the @rootfs
   subvolume.  Also, including them in snapshots would be very expensive
   because some of these directories have too much variable data.
2. If I snapshot @home (probably for backup) I don't want to snapshot
   user cache (see above).
3. Some user data should be on the HDD, such as videos, music, pictures,
   downloads etc.  They are large files that would fill the SSD; and
   their usage characteristics don't require SSD performance.
4. Also some of the user cache should be on the HDD (such as web browser
   caches), to avoid wearing the SSD.

> ** Swappiness

I have not messed with swappiness.

Speaking of swap, I dedicated a 16 GiB swap partition at the start of
the HDD.

All is working well, except for some error messages I get when shutting
down.  See my email from Thu, 20 Jan 2022 08:57:35 -0300 with subject
'"Failed unmounting "/{root,var/cache} error messages when shutting down' 
(Message-ID <87zgnq62mo....@disroot.org>).

Kind regards,
  Jorge

-- 
- Many people hate injustice but few check the facts; this causes more
  injustice.  Ask me about <https://stallmansupport.org>
- I am Brazilian.  I hope my English is correct and I welcome feedback.
- https://www.defectivebydesign.org
- https://www.gnu.org

Reply via email to