One of the first disk commands new Linux users learn is df -h. The 'df' stands for disk filesystem and the '-h' option modifies the df command so that disk sizes are displayed in a human-readable format, using KB, MB, or GB instead of raw blocks.
The 'df -h' command is simple, fast, and incredibly useful — but the output can be confusing at first glance. You’ll often see entries that don’t look like real disks at all. Beginners may be left wondering what’s actually using storage and what isn’t.
Here’s a real example of df -h output from a desktop Linux system:
| Filesystem | Size | Used | Avail | Use% | Mounted on |
|---|---|---|---|---|---|
| udev | 5.7G | 0 | 5.7G | 0% | /dev |
| tmpfs | 1.2G | 1.7M | 1.2G | 1% | /run |
| /dev/nvme1n1p2 | 467G | 63G | 381G | 15% | / |
| tmpfs | 5.8G | 4.0K | 5.8G | 1% | /dev/shm |
| tmpfs | 5.0M | 8.0K | 5.0M | 1% | /run/lock |
| efivarfs | 192K | 147K | 41K | 79% | /sys/firmware/efi/efivars |
| /dev/nvme1n1p1 | 256M | 55M | 202M | 22% | /boot/efi |
| tmpfs | 1.2G | 4.1M | 1.2G | 1% | /run/user/1000 |
The most important thing to understand is that not everything shown here is a physical disk. Some entries represent memory-backed or firmware-backed filesystems that behave like disks but don’t consume SSD or HDD space.
The line mounted at / is the key one for most users. In this case, /dev/nvme1n1p2 is the main root filesystem. This is where the operating system, applications, and most user data live. The Size, Used, and Avail columns here reflect real, persistent storage on the NVMe drive.
Entries like tmpfs and udev are different. These are virtual filesystems backed by RAM, not disk. They exist to support running processes, system services, and inter-process communication. Their contents are temporary and are cleared on reboot. Seeing large sizes here does not mean your disk is being consumed.
/dev/shm, /run, and /run/user/1000 are all examples of RAM-based storage used for performance and cleanliness. Lock files, sockets, and session data live here so they don’t clutter the real filesystem or survive reboots unnecessarily.
The EFI-related entries are also special. efivarfs exposes UEFI firmware variables to the operating system, while /boot/efi is a small dedicated partition used by the firmware to start the system. These are intentionally small and normally show higher usage percentages without causing problems.
Once you recognize the difference between real storage and virtual filesystems, df -h becomes much easier to read. For disk space concerns, focus on the filesystem mounted at / and any separate /home or data partitions. The rest are part of Linux doing its job quietly in the background.
Linux Learning Series - Ben Santora - January 2026
Top comments (0)