logo

Shell Cheatsheet - File Systems

List available/supported filesystems

$ cat /proc/filesystems
nodev   sysfs
nodev   tmpfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cgroup2
...

List mounted filesystems

$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=123602848k,nr_inodes=30900712,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)

In a tree view

$ findmnt

Narrow down to ext4

$ findmnt -t ext4
$ mount -l -t ext4

List block devices

# List block devices
$ lsblk

# Locate/print block device attributes (the UUID)
$ blkid

# lsblk is not available on macOS, use diskutil instead.
$ diskutil list

How to check / repair a file system?

How to check

fsck (file system consistency check) is a tool for checking the consistency of a file system. E.g.

$ fsck /boot/efi
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action

How to repair

In general it is not safe to run fsck on mounted filesystems.

# unmount the disk
$ umount /dev/sda1

# clear the dirty bit and repair the disk:
# -a: automatic repair; -w: write the changes immediately.
$ fsck /dev/sda1 -a -w


# mount the disk again
mount /dev/sda1

fsck vs e2fsck

fsck is a wrapper for the filesystem-specific fsck.* family of tools. e2fsck is specific for ext2/ext3/ext4. They can be used interchangeably.

How to mount and unmount a device

To mount

$ mount -t type DEVICE DIR

# e.g. mount the device /dev/sdf to folder /mnt/workspace
$ mount /dev/sdf /mnt/workspace

If you leave the DIR part of syntax, it looks for a mount point in /etc/fstab.

# mount all according to /etc/fstab
$ sudo mount -a

To remount

$ mount -o remount /dev/DEVICE

To unmount

Use umount, note that is it "umount" instead of "unmount".

$ umount /dev/DEVICE

fstab

$ cat /etc/fstab

6 colums:

  • Device: the given name or UUID of the mounted device (sda1/sda2/etc).
  • Mount Point: the directory where the device should be mounted.
  • File System Type: the type of filesystem in use.
  • Options: lists any active mount options. If using multiple options they must be separated by commas.
  • Backup Operation:
    • 0: no backup.
    • 1: dump utility backup of a partition.
  • File System Check Order:
    • 0: fsck will not check the filesystem.
    • 0: represent the check order. The root filesystem should be set to 1 and other partitions set to 2.

A line may look like this:

/dev/mapper/rocky-rl--root /                       xfs     defaults        0 0

mount point is /, fs type is xfs.

Check File System Types

$ df -Th

You may find other filesystem like:

  • tmpfs: a common name for a mounted file system, but stored in volatile memory instead of a persistent storage device.
  • drvfs: mounted Windows disks, seen in Windows Subsystem for Linux (WSL). e.g. C:\ will be /mnt/c, and D:\ will be /mnt/d

To only show devices under /dev:

$ df -hT | awk '{print $1,$2,$NF}' | grep "^/dev"
/dev/sda3 ext4 /
/dev/sda2 ext2 /boot
/dev/sda6 ext4 /tmp
/dev/sdb1 ext4 /data1
/dev/sdc1 ext4 /data2
/dev/sdd1 ext4 /data3

Use diskutil

$ diskutil list
$ diskutil info -all
$ diskutil info /

List All Block Devices and Partitions

$ cat /proc/partitions
major minor  #blocks  name

253        0   31457280 vda
253       16   62914560 vdb
253       32      65536 vdc
253       48  251658240 vdd

Use file -s DEVICE to check type

$ sudo file -s /dev/vda
/dev/vda: Linux rev 1.0 ext4 filesystem data, UUID=6f54f78f-3f47-488c-ab1b-b1b8a596c2d3, volume name "c3image-rootfs" (needs journal recovery) (extents) (large files) (huge files)

What is a superblock?

The superblock is essentially file system metadata and defines the file system type, size, status, and information about other metadata structures (metadata of metadata).

There are multiple copies of the superblock. You can find the locations of the backups by:

$ dumpe2fs /dev/foo | grep -i superblock

What is errors=remount-ro?

From man page:

errors={continue|remount-ro|panic}
    Define the behavior  when  an  error  is  encountered.   (Either
    ignore  errors  and  just  mark  the  filesystem  erroneous  and
    continue, or remount the filesystem read-only, or panic and halt
    the  system.)   The default is set in the filesystem superblock,
    and can be changed using tune2fs(8).

Basically it will be remounted as read-only upon errors.

How to get udev device info

Print the SCSI device information for all /dev/sd devices

for d in /dev/sd*;
  do echo $d
  sudo /lib/udev/scsi_id -g -d $d;
done

Print the udev information for all /dev/ devices

$ udevadm info --export-db

How to format a device?

Use mke2fs, mkfs.ext2, mkfs.ext3, mkfs.ext4 etc. mkfs -t ext2 is equivalent to mke2fs

$ sudo mkfs.ext3 /dev/DEVICE

# Format and mount
$ mke2fs -F -j /dev/sdh
$ mkdir /ebs
$ mount /dev/sdh /ebs
# Copy data
$ dd bs=65536 if=/dev/sda1 of=/dev/sdh
$ fsck /dev/sdh

Troubleshooting

df not responding

Try df -l, -l for local only.

umount: it seems /dev/DEVICE is mounted multiple times

If you see this error:

$ umount /dev/DEVICE
umount: it seems /dev/DEVICE is mounted multiple times

Solution: use sudo

$ sudo umount /dev/DEVICE

Other commands

  • tune2fs: adjust tunable filesystem parameters on ext2/ext3/ext4 filesystems
  • mkswap: set up a Linux swap area

To work with XFS: mkfs.xfs

$ sudo apt-get install xfsprogs
$ sudo mkfs.xfs /dev/sdf
$ sudo mount -t xfs -o defaults /dev/sdf /var/www