Skip Navigation

One single partition for Linux versus using a partition table?

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.

90 comments
  • 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.

    • Thanks I think this is the answer I was looking for!

    • 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.

      • 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.

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

      • 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.

  • 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.

  • 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.

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

  • 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.

  • 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

    • 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.

    • 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?

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

      • 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!

  • It's not wrong, as such, but simply not right. Since you're using btrfs, having a separate partition for home makes little sense. I, personally, also prefer using a swapfile to a swap partition, but that's potato/potato.

    • Alright, but actually I don’t think I’m maximizing my use of btrfs. I only use btrfs because of its compatibility with Linux Mint’s Timeshift tool. Would you be implying if I used btrfs for the whole partition, I can reinstall / without overwriting /home?

      • BTRFS has a concept called a subvolume. You are allowed to mount it just like any other device. This is an example /etc/fstab I've copied from somewhere some time ago.

         undefined
            
        UUID=49DD-6B6F                                  /efi            vfat    defaults        0 2
        UUID=701c73d7-58b5-4f90-b205-0bb56a8f1d96       /               btrfs   subvol=@root    0 0
        UUID=701c73d7-58b5-4f90-b205-0bb56a8f1d96       /home           btrfs   subvol=@home    0 0
        UUID=701c73d7-58b5-4f90-b205-0bb56a8f1d96       /opt            btrfs   subvol=@opt     0 0
        UUID=701c73d7-58b5-4f90-b205-0bb56a8f1d96       /srv            btrfs   subvol=@srv     0 0
        UUID=701c73d7-58b5-4f90-b205-0bb56a8f1d96       /var            btrfs   subvol=@var     0 0
        
          

        /efi (or /boot, or /boot/efi, whatever floats your boat) still has to be a separate vfat partition, but all the other mounts are, technically speaking, the same partition mounted many times with a different subvolume set as the target.

        Obviously, you don't need to have all of them separated like this, but it allows you to fine tune the parts of system that do get snapshot.

    • Also, if I don’t indicate a swap partition during install, would the OS use swap files automatically?

      • I think the last time I installed Mint (21.2) it DID create a swapfile. Don't use it, so commented that out in /ETC/FSTAB.

      • I don't know, haven't used Mint in a decade. It's not difficult to set it up, though.

90 comments