Heya folks, some people online told me I was doing partitions wrong, but I’ve been doing it this way for years. Since I’ve been doing it for years, I could be doing it in an outdated way, so I thought I should ask.

I have separate partitions for EFI, /, swap, and /home. Am I doing it wrong? Here’s how my partition table looks like:

  • FAT32: EFI
  • BTRFS: /
  • Swap: Swap
  • Ext4: /home

I set it up this way so that if I need to reinstall Linux, I can just overwrite / while preserving /home and just keep working after a new install with very few hiccups. Someone told me there’s no reason to use multiple partitions, but several times I have needed to reinstall the OS (Linux Mint) while preserving /home so this advice makes zero sense for me. But maybe it was just explained to me wrong and I really am doing it in an outdated way. I’d like to read what you say about this though.

  • taanegl@beehaw.org
    link
    fedilink
    arrow-up
    34
    arrow-down
    1
    ·
    edit-2
    1 year ago

    Well technically, if you’re using BTRFS, you might want to check out subvolumes. Here’s my subvolume setup:

    • Subvolume 1, named @ (root subvol)
    • Subvolume 2, named @home (/home subvol)
    • Subvolume 3, named @srv (/srv subvol)
    • Subvolume 4, named @opt (/opt subvol)
    • Subvolume 5, named @swap (which is - you guessed it - the swap subvol)

    You then set up fstab to reflect each of the subvolumes, using the subvol= option. Here’s the kicker: they are all in one partition. Yes, even the swap. Though caveat, swap still has to be a swapfile, but in its own separate subvolume. Don’t ask me why, it’s just the way to do it.

    The great thing about subvolumes is that it doesn’t do any size provisioning, unless specified by the user. All subvolumes share the space available within the partition. This means you won’t have to do any soul searching when setting up the partitions regarding use of space.

    This also means that if I want to nuke and pave, I only need run a BTRFS command on my @ subvolume (which contains /usr, /share, /bin), because it won’t be touching the contents of @home, @srv, or @opt. What’s extra cool here is that I’ll lose 0% FS metadata or permission setup, since you’re technically just disassociating some blocks from a subvolume. You’re not really “formatting”… which is neat as hell.

    The only extra partitions I have is the EFI partition and an EXT4 partition for the /boot folder since I use LUKS2.

    • KiranWells@pawb.social
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      Have you had any luck with hibernation with a BTRFS swapfile? My computer still does not start from hibernation, and I am not sure why, even though I followed the Arch wiki to set it up.

      • taanegl@beehaw.org
        link
        fedilink
        arrow-up
        5
        arrow-down
        1
        ·
        1 year ago

        Can’t say I have. Haven’t used hibernation mode for years even. Sleep mode is just too good nowadays for me to use it, so I guess we could chalk that up to a fault of the setup.

        According to ReadTheDocs (BTRFS, swapfile) it’s possible under certain circumstances, but requires the 6.1 kernel to do it in a relatively easy way.

    • seitanic@lemmy.sdf.org
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      How does that work with you’re installing a new system? Do the subvolumes just show up like partitions?

      • Tiuku@sopuli.xyz
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        In tools like lsblk? Nope. They appear as directories, usually in the top-level subvolume, which typically isn’t mounted anywhere in the system.

        Then you just create mount entries in /etc/fstab just like you would with partitions, this time just using the subvol= option as mentioned above. I don’t know if there are any installers that do this for you. Archwiki – as usual – has good documentation on this.

        • seitanic@lemmy.sdf.org
          link
          fedilink
          arrow-up
          3
          ·
          edit-2
          1 year ago

          So, it doesn’t sound like it would be useful for me, since the reason why I have separate partitions in the first place is so that I can re-install a distro or install a new distro without having to back up /home first.

  • Quazatron@lemmy.world
    link
    fedilink
    arrow-up
    24
    arrow-down
    1
    ·
    1 year ago

    It’s fine for most uses.

    For server or enterprise cases you want to separate /usr, /var and /tmp to prevent a rogue process from filling the / volume and crashing the machine.

    • CameronDev@programming.dev
      link
      fedilink
      arrow-up
      12
      arrow-down
      1
      ·
      1 year ago

      I routinely 100% my root volume accidentally (thanks docker), but my machine has never crashed, it does tend to cause other issues though. Does having a full /usr, /var or /tmp not cause other issues, if not full crashes?

      • lemmyvore@feddit.nl
        link
        fedilink
        English
        arrow-up
        7
        ·
        1 year ago

        Of course it does, it’s actually filling those that crashes the machine, not /.

        When space runs out it runs out, there’s no magical solution. Separating partitions like that is done for other reasons, not to prevent runaway fill: filesystems with special properties, mounting network filesystems remotely etc.

      • Quazatron@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        1 year ago

        It depends, if your docker installation uses /var, it will surelly help to keep it separated.

        For my home systems, I have: UEFI, /boot, /, home, swap.

        For my work systems, we additionally have separate /opt, /var, /tmp and /usr.

        /usr will only grow when you add more software to your system. /var and /tmp are where applications and services store temporary files, log files and caches, so they can vary wildly depending on what is running. /opt is for third-party stuff, so it depends if you use it or not.

        • CameronDev@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          Managing all that seems like a lot of effort, and given my disk issues havent yet been fatal, ill probably not worry about going that far. Thanks for the info though.

          • Quazatron@lemmy.world
            link
            fedilink
            arrow-up
            4
            ·
            1 year ago

            No effort at al. You define them once at install time and that’s it.

            For added flexibility you can use LVM volumes instead of partitions, they make resizing operations a thing of joy.

            BTRFS also has something like subvols baked in, but I haven’t looked into it.

            • CameronDev@programming.dev
              link
              fedilink
              arrow-up
              5
              ·
              1 year ago

              Getting the size wrong and needing to resize is the effort part for me. Resizing/moving my partitions is always a pain.

                • CameronDev@programming.dev
                  link
                  fedilink
                  arrow-up
                  1
                  ·
                  1 year ago

                  Last time i used LVM was way back in fedora 8 days, when it was the default partition. It was super annoying to use, as gparted didnt support it, and live cds often had trouble with it. Having to read doco to resize it was pretty not good for a newbie to linux. Has it improved since?

  • Infiltrated_ad8271@kbin.social
    link
    fedilink
    arrow-up
    19
    ·
    edit-2
    1 year ago

    I don’t like wasting space or having to predict how much space I’ll be using two years from now, so I prefer the minimum of partitions: efi, boot, and system(luks), with a btrfs subvol for /, home, and swapfile.

  • Atemu
    link
    fedilink
    arrow-up
    12
    ·
    edit-2
    1 year ago

    What you’re doing is perfectly fine.

    It is however more of a mitigation for bad distro installers than general good practice. If the distro installers preserved /home, you could keep it all in one partition. Because such “bad” distro installers still exist, it is good practice if you know that you might install such a distro.

    If you were installing “manually” and had full control over this, I’d advocate for a single partition because it simplifies storage. Especially with the likes of btrfs you can have multiple storage locations inside one partition with decent separation between them.

  • Phoenixz@lemmy.ca
    link
    fedilink
    arrow-up
    12
    arrow-down
    1
    ·
    1 year ago

    All fine though I would recommend you look into lvm, gives you easier control over sizing and resizing, even online.

    • msage@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Isn’t it better to use btrfs nowadays?

      I’m also old-school lvm person, but I put btrfs in my Gentoo desktop, though I don’t actually utilize it at all.

      • Phoenixz@lemmy.ca
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        Yes and no

        Btrfs is awesome and awful at the same time, and it’s a complicated story. It was rather ill-defined at the beginning and took a LONG time to get anywhere.

        Don’t get me wrong though, it’s a pretty awesome filesystem right now and I use it for all my storage drives. Having said that, i still use ext4 with lvm on my system drives and evenrnmy btrfs drives have lvm under them

  • Avid Amoeba@lemmy.ca
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    If you reinstall often a separate /home makes some sense. Otherwise it’s probably pointless. I’d try to get to a point where I don’t have to reinstall my base OS and invest in an automatic backup solution.

  • ares35@kbin.social
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    what you’re doing is perfectly fine. if it’s what your comfortable with, there’s no ‘need’ to change.

  • nous@programming.dev
    link
    fedilink
    English
    arrow-up
    8
    ·
    1 year ago

    I set it up this way so that if I need to reinstall Linux, I can just overwrite / while preserving /home and just keep working after a new install with very few hiccups.

    Even with a single partition for / and /home you can keep the contents of /home during a reinstall by simple not formatting the partitions again. I know when I tried years ago with Ubuntu years ago the installed asked if I wanted to remove the system folders for you. But even if the installer does not you can delete them manually before hand. Installers wont touch /home contents if you don’t format the drive (or any files outside the system folders they care about).

    Though I would still backup everything inside /home before any attempt at a reinstall as mistakes do happen no matter what process you decide to go with.

    • Mambabasa@slrpnk.netOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      Am I doing something wrong? Not seeing a particular option? I have never seen or experienced what you’re describing.

      • nous@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        There was no option per say, at least on the ubuntu installed I tried many years ago. Just a popup that happened sometime before the install but after the manual partitioning if the root partition had folders like /etc /usr /var etc that were needed by the installer. Not sure if all installers do this - but I would suspect if they didnt you can just delete the folders manually before you enter the installer and pick manual partitioning option and opt to not format any partitions.

  • Kindness
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    1 year ago

    You’re using it well. Nothing wrong at all.

    Butterface excels at keeping data safe-ish or at least lets you know when to throw in the towel, and which bits you’ve lost. It’s also write intensive if you open a file with write permissions, which is harder on your drives.

    Btrfs is great for the data you want to keep long term.

    Also UEFI has some nice advantages if your computer isn’t a dino that can’t handle it.

    Do what works for you, and keep on keeping on.

    • chunkyhairball
      link
      fedilink
      arrow-up
      8
      ·
      1 year ago

      You’re using it well. Nothing wrong at all.

      This. Too many partitions for a home system can get pretty stupid pretty quick. But OP has just the right amount of separation between system and data. I’ve known people that were uncomfortable without breaking /var (or /var/log) off into its own partition, but that’s really overkill for a stable, personal system, IMO.

      computer isn’t a dino that can’t handle it.

      I feel personally called out by this statement!

      Seriously, the big one for me, is that I like having drive encryption. It protects my computer and data should it fall into the hands of, say, burglers. I also like turning it up to the elevens simply because I’m a bit TOO paranoid. You really need more than 1GB of ram to do argon2id key derivation, which is what fde is all moving to for unlocking purposes, and BIOS just can’t do that. My main workstation is using a powerful, but older mobo with gigabyte’s old, horrid faux EFI support.

      Another good one for the security-conscientious person is Secure Boot, meaning that you control what kernels and bootloading code is allowed to boot on your computer, preventing Evil Maid-type attacks: https://wiki.ubuntu.com/UEFI/SecureBoot

      That’s pretty far fetched, but maybe not too out of the question if you, say, work for a bank or accountant.

      Of course none of that matters if you don’t practice good operational security.

  • Infernal_pizza@lemmy.world
    link
    fedilink
    English
    arrow-up
    7
    ·
    1 year ago

    Why do you have a btrfs volume and an ext4 volume? I went btrfs and used sub volumes to split up my root and home but I’m not sure if that’s the best way to do it or not

    • S410@kbin.social
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      Not OP, but I have the same setup.

      I have BTRFS on /, which lives on an SSD and ext4 on an HDD, which is /home. BTRFS can do snapshots, which is very useful in case an update (or my own stupidity) bricks the systems. Meanwhile, /home is filled with junk like cache files, games, etc. which doesn’t really make sense to snapshot, but that’s, actually, secondary. Spinning rust is slow and BTRFS makes it even worse (at least on my hardware) which, in itself, is enough to avoid using it.

      • d_k_bo@feddit.de
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        HDD, which is /home

        Spinning rust is slow

        Have you tried to either

        1. put /home on the SSD and only larger subdirectories on the HDD
        2. set eg. XDG_CONFIG_HOME, XDG_CACHE_HOME etc. to a location on the SSD (to improve program startup time)

        I have no direct comparison, but I can imagine that this could reduce the performance impact of your HDD.

        • S410@kbin.social
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          I have a 120 gig SSD. The system takes up around 60 gigs + BTRFS snapshots and its overhead. A have around 15 gigs of wiggle room, on average. Trying to squeeze some /home stuff in there doesn’t really seem that reasonable, to be honest.

    • Mambabasa@slrpnk.netOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      I use btrfs for my / because I can use Linux Mint’s Timeshift tool to make snapshots, but I don’t want snapshots of /home to be included. Am I doing this wrong?

      • S410@kbin.social
        link
        fedilink
        arrow-up
        8
        ·
        1 year ago

        You can put your /home on a different BTRFS subvolume and exclude it from being snapshotted.

        • Mambabasa@slrpnk.netOP
          link
          fedilink
          English
          arrow-up
          3
          ·
          1 year ago

          How about when I reinstall the OS? Will it only affect the / and not touch the /home?

          • S410@kbin.social
            link
            fedilink
            arrow-up
            4
            ·
            1 year ago

            As long as you don’t re-format the partition. Not all installers are created equal, so it might be more complicated to re-install the OS without wiping the partition entirely. Or it might be just fine. I don’t really install linux often enough to know that. ¯\_(ツ)_/¯

      • Infernal_pizza@lemmy.world
        link
        fedilink
        English
        arrow-up
        3
        ·
        1 year ago

        Not sure if that’s wrong or not tbh, I use snapper instead of timeshift and I wanted /home included in the snapshots anyway (I think it let me set them up as 2 separate jobs). The reason I went with subvolumes instead of separate partitions is that I didn’t have to worry about sizing. I also know I can reinstall to my root subvolume without affecting the others, depending on the installer for your distro I don’t know how easy that is vs just having separate partitions. I played around with it in a VM for a while to see what the backup and restore process is like before I actually committed to anything!

        • Mambabasa@slrpnk.netOP
          link
          fedilink
          English
          arrow-up
          3
          ·
          1 year ago

          Alright, thanks, I’ll try some experiments the next time I have the opportunity to do so.

    • pastermil@sh.itjust.works
      link
      fedilink
      arrow-up
      4
      ·
      1 year ago

      I use btrfs subvols to keep my stuff separate without any sort of hard limit.

      The reason? Makes managing system backups easier. The home and log directories are both on separate subvol; the tmp directories are on tmpfs. All I need to do is snapshpt the root subvol.