How to Dynamically Mount and Automount Block Devices in Ubuntu Using systemd-mount

In traditional Linux system administration, managing file system mounts has relied heavily on the classic mount command and persistent entries inside /etc/fstab. While effective for static server volumes, this approach introduces friction when managing temporary partitions, external encrypted drives, loop disk images, or network shares that should mount on-demand and unmount automatically after inactivity. In modern Ubuntu systems governed by systemd, the systemd-mount utility bridges this operational gap. By interfacing directly with the init system’s unit manager, systemd-mount dynamically synthesises transient .mount and .automount units on the fly. This architecture enables declarative discovery, automatic directory creation, custom timeouts, and safe unmounting without touching /etc/fstab.

Understanding systemd-mount vs the Legacy mount Command

When you execute standard mount, the operation runs as an isolated system call without notifying the wider service dependency graph. If a network dependency drops or an unmount hangs during shutdown, unmanaged mount points can cause system timeouts.

In contrast, systemd-mount integrates directly into systemd’s service manager:

  • Transient Units: Generates first-class systemd .mount units with full dependency tracking (e.g. local-fs.target and remote-fs.target).
  • Automatic Directory Creation: Automatically creates destination mount paths if they do not exist, and cleans them up cleanly upon unmounting.
  • On-Demand Automounting: Generates companion .automount units that intercept filesystem access triggers, mounting volumes instantly when accessed and unmounting them when idle.
  • Device Discovery: Resolves Discoverable Partitions Specification (DPS) labels and GPT partition UUIDs automatically.

Mounting Block Devices and Partitions On the Fly

To mount a disk partition to an arbitrary target directory using systemd-mount, run:

sudo systemd-mount /dev/sdb1 /mnt/data-backup

Notice that you do not need to run mkdir /mnt/data-backup beforehand; systemd-mount provisions the target path automatically. To verify the synthesized transient unit status:

systemctl status mnt-data\\x2dbackup.mount

To unmount the volume and delete the ephemeral mount directory cleanly, use systemd-umount:

sudo systemd-umount /mnt/data-backup

Configuring On-Demand Automounting with Inactivity Timeouts

For removable backup media or remote filesystems where drives should only stay mounted when active, configure an automount unit with an idle timeout using --automount=yes and --timeout-idle-sec.

Execute the following command to create an automount point that unmounts after 5 minutes (300 seconds) of inactivity:

sudo systemd-mount --automount=yes --timeout-idle-sec=300 /dev/sdb1 /mnt/removable-archive

Verify that the automount unit is listening for kernel access events:

systemctl status mnt-removable\\x2darchive.automount

At this stage, the partition is not physically mounted. As soon as any process accesses /mnt/removable-archive (for example, running ls /mnt/removable-archive), systemd mounts the block device instantaneously. Once 300 seconds elapse without active file handles, systemd unmounts the volume automatically.

Mounting Raw Disk Images and Ephemeral Loop Files

systemd-mount provides first-class support for raw image files (such as .raw, .img, or ISO files), handling loop device attachment and partition mapping automatically.

To mount a raw disk image directly to a destination directory:

sudo systemd-mount /var/lib/images/ubuntu-custom.raw /mnt/image-root

To audit loop device bindings managed by systemd:

losetup -a

When unmounted via sudo systemd-umount /mnt/image-root, systemd safely unmounts the filesystem and tears down the associated loop device in a single operation.

Passing Custom Filesystem Options and File Ownership

You can pass standard mount options (such as read-only mode, noexec, UID/GID assignments, or filesystem-specific parameters) using -o:

# Mount a filesystem with read-only and noexec security flags
sudo systemd-mount -o ro,noexec,nodev /dev/sdc1 /mnt/secure-audit

# Mount a FAT32 or NTFS external drive with specific user and group ownership
sudo systemd-mount -o uid=1000,gid=1000,umask=022 /dev/sdd1 /mnt/media-storage

Discovering Partitions Using UUIDs and Labels

Rather than relying on volatile device node names (like /dev/sdb1), you can mount by filesystem UUID or volume label directly:

# Mount by filesystem UUID
sudo systemd-mount UUID=4a2c1b89-9a2d-4f32-8491-01f2e54d312a /mnt/fast-cache

# Mount by volume label
sudo systemd-mount LABEL=AppBackup /mnt/app-backup

To list all active mounts currently managed under systemd:

systemd-mount --list

Leveraging systemd-mount and systemd-umount on Ubuntu empowers system engineers to automate storage provisioning, safeguard backup drives with idle auto-unmounting, and eliminate configuration file clutter.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.