shamelessly stolen from nixCraft on mastodon

  • Redjard@lemmy.dbzer0.com
    link
    fedilink
    arrow-up
    6
    ·
    11 months ago

    Try btrfs, where with only 5 hours of research you can create a swap file without writing the entire file.
    Also there is no other option, the 5h are non-optional.

    After doing that twice, In my / now lives

    /swapfile-howto
    # this is btrfs not a normal file system.
    # We have to create and allocate the file in a btrfs friendly way,
    # and tell btrfs to not move or segment it.
    
    touch /swapfile999
    chmod 600 /swapfile999
    truncate -s 0 /swapfile999
    chattr +C /swapfile999
    fallocate -l 999G /swapfile999
    mkswap /swapfile999
    swapon /swapfile999 -p 200
    
    • ashe@lemmy.starless.one
      link
      fedilink
      arrow-up
      11
      ·
      11 months ago

      I admire your dedication, but you really could’ve just done this

      btrfs fi mkswapfile --size 16G /swap
      swapon /swap
      
      • Redjard@lemmy.dbzer0.com
        link
        fedilink
        arrow-up
        7
        ·
        11 months ago

        Huh, thank you for telling me, I’ll amend the file with that info. This being a thing will probably spare many the troubles I experienced.

        I did some digging to reconstruct what happened in my case. The file was created on 2022-12-08, and I remember this being after I rediscovered my earlier approach, from - going by my browsing history - mid september 2022. I worked through plenty of wiki pages at the time, including the btrfs docs on swapfiles, where I probably got my commands. The truncate in there to fix earlier mistakes is something I would keep in, but not add myself, so I must have copied that pages solution. Interestingly, going by archive.org, between dec 02 and dec 13 the documentation on btrfs fi mkswapfile was added to that page.
        I am in no way confident in my memory here, but I vaguely recall seeing that command, and being somewhat surprised to not remember it from earlier. That confusion may have even contributed to pushing me to create the file.
        Had I seen it, I probably would have tried the command and seen it not exist. Following the note of btrfs 6.1 being required, I would have checked the version and seen that my distro didn’t have btrfs-progs 6.1, not even as an alpha on the development channel.
        I may also have remembered there being multiple commands needed earlier, and not wanting to deviate from the proven method dismissed the apparently simpler method.

        To complete this very meaningful and productive story, on 2022-12-23 my distro got the early christmas present of btrfs-progs 6.1 as an unstable release in the dev channel. After many retractions and republishings of a total of 4 subversions, on 2023-03-04 the first stable release of 6.1.x was made available.

        I was 6 months early. Or rather the btrfs devs were 6 months late.

        Edit (actually not edit because I didn’t send yet):
        I actually checked the repo and the documentation changed on dec 06. Here is the commit. The corresponding release occurred on dec 22.
        Dumping 30mins into writing this actually resulted with a memorable story. By chance I stumbled over the documentation of a new feature, 2 days after it had been written, but 2 weeks before even the first alpha release containing it was created.