How Linux thinks about your drives

If you’ve ever wondered why plugging in a USB drive just works, but your internal drives are always there waiting at boot, it’s not magic. Linux has two distinct systems for handling storage, and understanding the difference makes a lot of everyday frustrations suddenly make sense.

Permanent drives: fstab

For drives that are always connected like your main SSD, a dedicated storage drive, a NAS mount, Linux uses a configuration file called /etc/fstab. This file is essentially a list of instructions that tells the system what to mount, where to mount it, and how, every time the machine boots. Think of fstab like a seating chart. Before the party starts, every drive already has an assigned seat. When the system boots, it reads the list and puts everything exactly where it’s supposed to be. No improvising. Entries in fstab use a fixed mount point, typically under /mnt/. It’ll look something like /mnt/storage or /mnt/backup. That path is stable and predictable, which matters when other software depends on finding files in a specific location. Docker containers, backup tools, and media servers all benefit from knowing exactly where a drive will be, every single time. Here’s what my fstab looks like (a bit redacted for brevity):

# <file system> <mount point> <type> <options> <dump> <pass>

UUID=XXXXXXXX      /                       ext4    noatime,errors=remount-ro             0 1
PARTUUID=XXXXXXXX  /boot/efi               vfat    umask=0077                            0 2
UUID=XXXXXXXX      /mnt/photos             ext4    rw,noatime,nofail,x-gvfs-hide         0 2
UUID=XXXXXXXX      /mnt/wdelements         ntfs-3g defaults,nofail,uid=1000,gid=1000...  0 0
UUID=XXXXXXXX      /mnt/storage1           ext4    rw,noatime,nofail,x-gvfs-hide         0 2
UUID=XXXXXXXX      /mnt/storage2           ext4    rw,noatime,nofail,x-gvfs-hide         0 2
UUID=XXXXXXXX      /mnt/storage3           ext4    rw,noatime,nofail,x-gvfs-hide         0 2
UUID=XXXXXXXX      /mnt/media              ext4    rw,noatime,nofail,x-gvfs-hide         0 2
PARTUUID=XXXXXXXX  /recovery               vfat    umask=0077                            0 0
UUID=XXXXXXXX      none                    swap    defaults                              0 0
UUID=XXXXXXXX      /mnt/backups            ext4    rw,noatime,nofail,x-gvfs-hide         0 2

Each field tells Linux something specific: which device to use (identified by UUID rather than a device name that can change), where to mount it, what file system it uses, and how to handle it if something goes wrong. Screenshot of nautilus window highlighting storage devices in /mnt

Removable drives: udisks2 and automounting

Plug in a thumb drive or an SD card and something different happens. A background service called udisks2 detects the new device, mounts it automatically under /media/yourusername/drivelabel, and your file manager shows it in the sidebar with a little eject button. Unplug it and the mount point disappears entirely. This is the automount system and it’s designed for convenience over consistency. You don’t configure anything. udisks2 handles the whole chain automatically: the kernel detects the hardware, fires an event, udisks2 picks it up, mounts it, and your file manager reflects it instantly.

Screenshot of nautilus window highlighting storage devices in /mnt

The tradeoff is that the mount path isn’t predictable. Instead, it’s based on the drive’s label or UUID and tied to your desktop session. That’s fine for moving files around but it can cause problems if a privileged tool needs to write to the drive. The difference is that the udisks2 removable drives are owned by your user session as opposed to the mounted drives from fstab, which are owned by the sytem. For example, I ran into this issue when I attempted to run a backup using aptik and save it to my UBS thumb drive. aptik refused to use the thumb drive until I mounted it using fstab. What caused the issue? aptik runs as a root service and because my user owned the udisks2 mount the thumb drive was bound to, aptik couldn’t use my drive because root didn’t own it.

Why It Matters

The practical takeaway is straightforward. If something depends on a drive (a service, a backup tool, anything running as root) put it in fstab with a fixed mount point. If you’re just plugging in a drive occasionally to transfer files, let the automounter handle it and don’t overthink it. Most of the time Linux handles this invisibly. The two systems coexist without conflict, each handling the drives it’s meant for. But what if something goes wrong, like a backup tool that won’t write, a container that can’t find its data, a drive that doesn’t show up where you expect? Knowing which system is in charge points you straight to the solution.

# run this command on your computer and see what yours looks like
username@computername:~$ lsblk -o NAME, MOUNTPOINT, FSTYPE
NAME          MOUNTPOINT                      FSTYPE
sda           /mnt/media                      ext4
sdb           /mnt/backups                    ext4
sdc
├─sdc1        /boot/efi                       vfat
├─sdc2        /recovery                       vfat
├─sdc3        /                               ext4
└─sdc4                                        swap
  └─cryptswap                                 swap
sdd           /mnt/photos                     ext4
sde
└─sde1        /mnt/wdelements                 ntfs
sdf           /mnt/storage1                   ext4
sdg           /mnt/storage2                   ext4
sdh           /mnt/storage3                   ext4
sdi
└─sdi1        /media/seth/usbdrive ext4
sdj
└─sdj1                                        ntfs
zram0         [SWAP]