Managing /etc/fstab

/etc/fstab (file systems table) controls which file systems are automatically mounted at boot and with what options. A wrong entry in fstab can prevent the server from booting. Understanding the format, knowing how to test changes safely, and knowing how to recover from a broken fstab are critical skills for any Ubuntu administrator.

fstab format explained

/etc/fstab column structure

# <device>          <mount_point>  <type>  <options>          <dump>  <pass>
UUID=abc123...      /              ext4    defaults            0       1
UUID=def456...      /home          ext4    defaults,noatime    0       2
UUID=789abc...      /data          xfs     defaults,noatime    0       2
UUID=ghi012...      none           swap    sw                  0       0
tmpfs               /tmp           tmpfs   defaults,nosuid     0       0
//nas/share         /mnt/nas       cifs    credentials=...     0       0
ColumnNameValues
1DeviceUUID=..., LABEL=..., /dev/sdXN, server:/path
2Mount pointDirectory path, or none for swap
3Typeext4, xfs, btrfs, swap, tmpfs, nfs, cifs, auto
4OptionsComma-separated list (see below)
5Dump0 = skip dump backup, 1 = include (rarely used)
6Pass0 = no fsck, 1 = root only, 2 = other partitions

Mount options reference

OptionEffectUse when
defaultsrw, suid, dev, exec, auto, nouser, asyncGeneral use
noatimeDon’t update access time on readsAll servers (reduces writes, improves performance)
roRead-only mountISO images, read-only NFS exports
noexecPrevent execution of binaries/tmp, /var/tmp (security)
nosuidIgnore suid/sgid bits/tmp, data volumes (security)
nodevIgnore device filesData volumes (security)
_netdevThis is a network device; wait for network before mountingNFS, CIFS mounts
nofailDon’t fail boot if this mount failsOptional removable drives

Common fstab examples

Production server fstab with security hardening

# System root
UUID=a1b2c3d4-...   /            ext4    defaults,noatime                 0  1

# Home directories
UUID=e5f6g7h8-...   /home        ext4    defaults,noatime                 0  2

# Data volume (XFS)
UUID=i9j0k1l2-...   /data        xfs     defaults,noatime                 0  2

# Temporary files (hardened)
tmpfs               /tmp         tmpfs   defaults,nosuid,nodev,noexec     0  0
tmpfs               /var/tmp     tmpfs   defaults,nosuid,nodev,noexec     0  0

# Swap
UUID=m3n4o5p6-...   none         swap    sw                               0  0

# NFS share (waits for network, non-fatal if unavailable)
192.168.1.10:/exports/data   /mnt/nfs   nfs   defaults,_netdev,nofail     0  0

Testing and validating fstab

# ALWAYS test before rebooting — a bad fstab can prevent boot
# Step 1: Create the mount point directory
sudo mkdir -p /data

# Step 2: Test mounting all fstab entries
sudo mount -a

# Step 3: Verify the mount succeeded
df -h /data
mount | grep /data

# Step 4: Check for errors
sudo systemctl daemon-reload
sudo systemctl --failed    # Check for failed mount units

Recovering from a bad fstab

# If the server does not boot due to a bad fstab entry:
# 1. Boot into recovery mode (GRUB → Advanced → Recovery mode)
# 2. At the recovery menu, choose "Root shell"
# 3. Remount root as read-write
mount -o remount,rw /

# 4. Fix /etc/fstab
nano /etc/fstab
# or restore from backup:
cp /etc/fstab.bak /etc/fstab

# 5. Test
mount -a

# 6. Reboot
systemctl reboot

💡 TIP: Before every fstab edit, make a backup: sudo cp /etc/fstab /etc/fstab.bak. Keep a copy of the working fstab in a separate location (git repository, configuration management, documentation). A bad fstab is one of the most common causes of server boot failures, and having the backup means a 30-second fix instead of a 30-minute recovery.

Conclusion

The most important fstab rules: use UUIDs (not device names), always test with sudo mount -a before rebooting, and always keep a backup of your working fstab. Add noatime to all non-root mount points to reduce unnecessary writes. Add nosuid,nodev,noexec to /tmp and data volumes for security hardening. Use _netdev and nofail for network mounts so a network outage does not prevent the server from booting.

Need help with Ubuntu administration?

Work directly with Muhammad Irfan Aslam for Ubuntu Server, Linux, cloud, Docker, DevOps, CI/CD, or infrastructure troubleshooting support.

Work with Muhammad Irfan Aslam