I’m attempting a new install. I want to use btrfs with swapfile.

Do I need to disable compression on my swap subvolume?

Is there anything else I should keep in mind for fstab if I want to, say, not keep track of my Downloads folder when snapshotting?

Here is my fstab:

LABEL=arch@btrfs        /               btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=256,subvol=>

LABEL=arch@btrfs        /home           btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=257,subvol=>

LABEL=arch@btrfs        /var/cache/pacman/pkg   btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=259>

LABEL=arch@btrfs        /var/log        btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=258,subvol=>

LABEL=arch@btrfs        /.snapshots     btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=260,subvol=>

LABEL=arch@btrfs        /swap           btrfs           rw,relatime,discard=async,space_cache=v2,subvolid=263,subvol=>

LABEL=efi@fat32         /efi            vfat            rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=asci>

/swap/swapfile          none            swap            defaults        0 0
  • Illecors@lemmy.cafe
    link
    fedilink
    English
    arrow-up
    14
    ·
    11 months ago

    Do I need to disable compression on my swap subvolume?

    https://wiki.archlinux.org/title/Btrfs#Swap_file

    Is there anything else I should keep in mind for fstab if I want to, say, not keep track of my Downloads folder when snapshotting?

    Just create a separate subvolume for it. Snapshots do not work recursively, so it will be left alone.


    Mount options also only take effect on the first mount of the device. Since it looks like you only have 1 btrfs device - only / needs the options, really.

    • ActualOP
      link
      fedilink
      English
      arrow-up
      5
      ·
      11 months ago

      Mount options also only take effect on the first mount of the device. Since it looks like you only have 1 btrfs device - only / needs the options, really.

      I didn’t know this. Thanks!

      • Illecors@lemmy.cafe
        link
        fedilink
        English
        arrow-up
        3
        ·
        11 months ago

        Glad I could help! Just to make things a bit clearer - this is a btrfs thing. Other FSes behave differently.

  • bazsy@lemmy.world
    link
    fedilink
    English
    arrow-up
    6
    ·
    11 months ago

    Do I need to disable compression on my swap subvolume?

    Short: No

    Long: it doesn’t matter when mounting multiple subvolumes of the same btrfs partition the options from the first one (usually /) will apply to all. So even if you disable it, that will be ignored.

    The old way of creating swap shows the chattr +C line which disables CoW. The same method should work for your Downloads folder since CoW is needed for snapshotting.

  • LemmyHead@lemmy.ml
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    11 months ago

    Looks good. I also add compress=zstd to / subvolume. I don’t add discard because it’s set up in LUKS for me. I also don’t use a separate subvolume for /var/log, so where possible, compression is used. Journald auto adds +C attr to prevent COW being active on those files because it’s unnecessary. I also use a separate swapfile instead of a separate fs.

  • M500@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    11 months ago

    Are you sure you can use a swap file with btrfs? I did not think you could do that. Maybe I was on old software last time I tried.

    • ActualOP
      link
      fedilink
      English
      arrow-up
      6
      ·
      11 months ago

      Yeah it’s supported. It’s listed in the docs for btrfs and arch.

      • Atemu@lemmy.ml
        link
        fedilink
        arrow-up
        4
        arrow-down
        2
        ·
        11 months ago

        I’d highly recommend setting up a swap partition instead.

          • recursive_recursion [they/them]A
            link
            fedilink
            English
            arrow-up
            3
            ·
            edit-2
            11 months ago

            As swap is recommended just in case all RAM is maxed it’s better to have a swap partition as swap files have certain limitations when in combined use with BTRFS:

            • “subvolume - cannot be snapshotted if it contains any active swapfiles”
            • has a chance to fragment
            • has issues with hibernation (that I’ve personally encountered multiple times)

            here’s the link for more info: https://man.archlinux.org/man/btrfs.5#SWAPFILE_SUPPORT

            after switching to a swap partition with BTRFS I’ve experienced no issues for a user configuration

            • rotopenguin@infosec.pub
              link
              fedilink
              English
              arrow-up
              2
              ·
              edit-2
              11 months ago

              I don’t see how swap has much chance to fragment. A swapfile has to be fully allocated up front and cannot be CoW. If it’s allocated well in the first place, it will stay that way.

              The swap code doesn’t really do I/O through the filesystem. AIUI, it locks the file, gets the disk block #s from the FS, and after that it accesses those blocks directly.

              • recursive_recursion [they/them]A
                link
                fedilink
                English
                arrow-up
                1
                ·
                11 months ago

                From the BTRFS manual:

                “Nodatacow implies nodatasum, and disables compression.”

                “Datasum implies datacow”

                Based on these notes I’d assume that since swapfile disables COW that it also disables checksumming which is where the risk of fragmentation occurs

                I could be wrong tho

            • ActualOP
              link
              fedilink
              English
              arrow-up
              2
              ·
              11 months ago

              “subvolume - cannot be snapshotted if it contains any active swapfiles”

              Make a subvolume only for the swapfile.

              has a chance to fragment

              This is true for all files. Is it a bigger problem for swap?

              has issues with hibernation (that I’ve personally encountered multiple times)

              This one I can’t refute. How long ago did you have these issues?

              • recursive_recursion [they/them]A
                link
                fedilink
                English
                arrow-up
                3
                ·
                edit-2
                11 months ago

                Make a subvolume only for the swapfile.

                doesn’t this kinda defeat the purpose/benefits of using a swapfile?

                This is true for all files. Is it a bigger problem for swap?

                specificly swapfiles yes, for swap partitions nope

                How long ago did you have these issues?

                Dec 2022, was still using and testing with swapfiles then and said fuck it as it caused too much problems.

                I can’t rule out user error till I retest and strictly “follow the guide to the T” as I made modifications while following the same Arch guide for swapfile with BTRFS

                edit:
                also for clarification, I’m still not sure which one is optimal/best as I initially thought that using swapfile was forward thinking for the future, I’m using and recommending swap partitions as it seems to be the easiest to implement once and use continuously without any problems atm.

                • Supermariofan67
                  link
                  fedilink
                  arrow-up
                  2
                  ·
                  11 months ago

                  The reason I use a swap file is so that I can have only one partition backed by LUKS disk encryption, rather than having to screw around with lvm which comes with its own performance overhead and all. I’ve personally never had issues hibernating to.it, but given how much buggy uefi firmware is out there I’m not surprised to hear that other have issues

          • Atemu@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            11 months ago

            If you need to set up a special dedicated subvolume, might aswell set up a partition instead; it’s just simpler.

            With a swapfile you also can’t do multi-device setups which is a limitation I personally couldn’t live with.