How to List Disks, Partitions, and Filesystems on Fedora (lsblk, fdisk, df)

Use `lsblk` for a quick tree view of all block devices, `fdisk -l` for detailed partition table information, and `df -h` to check actual filesystem usage and mount points.

You plugged in a drive and nothing happened

You just plugged in a USB drive and the file manager isn't showing it. Or you ran df -h and saw /dev/mapper/fedora-root taking up 80% of your space, and you have no idea what that device name means. You need to see the physical disks, the partitions carved out of them, and where the filesystems are actually mounted. Fedora gives you three tools for this: lsblk for the tree view, fdisk for the partition table details, and df for usage. Knowing which one to reach for saves you from guessing and running the wrong command on the wrong device.

How storage layers map to commands

Think of a disk as a raw plot of land. Partitions are the boundaries you draw to divide that land into lots. The filesystem is the infrastructure you build on each lot so you can store files. The mount point is the address where you access that infrastructure.

lsblk shows you the land and the lots. It reads the kernel's block device tree and displays the hierarchy. fdisk shows you the surveyor's map of the boundaries. It reads the partition table metadata directly from the disk. df tells you how much stuff is stored on each lot and where you can walk in. It checks filesystem usage and mount points.

Fedora uses LVM by default on Workstation and Server installations. LVM adds another layer of abstraction. You will see devices like /dev/mapper/fedora-root instead of /dev/sda2. These are logical volumes. The tools below handle LVM devices correctly, but you need to understand the mapping to troubleshoot storage issues.

Inspect the device tree with lsblk

Start with lsblk. It is the safest and fastest way to see what the kernel knows about your storage. It reads /sys/block and requires no root privileges for basic output. It shows the hierarchy of disks, partitions, and mounts in a single view.

Here's how to get a clean, informative listing of all block devices with their mount points and filesystem types.

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE,MODEL
# -o selects specific columns to keep the output readable
# NAME shows device names like sda, nvme0n1, and partitions like sda1
# SIZE gives capacity in human-readable units by default
# TYPE distinguishes disk (disk), partition (part), and logical volume (lvm)
# MOUNTPOINT shows where the filesystem is accessible in the directory tree
# FSTYPE reveals the filesystem type like ext4, xfs, or swap
# MODEL prints the hardware model string for identification

NVMe drives use a different naming scheme than SATA or USB drives. You will see nvme0n1p1 instead of sda1. The n stands for namespace and the p stands for partition. lsblk handles both naming conventions transparently.

Run lsblk before you touch fdisk. You need to know the device name before you inspect it.

Read partition tables with fdisk

Use fdisk when you need details about the partition table itself. lsblk summarizes partitions, but fdisk shows sector boundaries, partition types, and flags. This is essential when you are troubleshooting boot issues or verifying that a partition was created correctly.

Here's how to list the partition table for a specific device without entering interactive mode.

sudo fdisk -l /dev/nvme0n1
# sudo is required to read partition tables on raw block devices
# -l lists partition information without entering interactive mode
# /dev/nvme0n1 targets the specific NVMe drive; replace with your device
# Output includes sector counts, partition types, and start/end boundaries

If you forget sudo, the command will fail with a permission error. The kernel protects raw block devices from unprivileged reads of partition metadata.

fdisk: cannot open /dev/sdb: Permission denied

Add sudo to the command. If you see Read-only file system or Input/output error, the disk might be failing or locked by another process. Check journalctl -xe for kernel I/O errors before assuming the partition table is corrupt.

fdisk reads the metadata on the disk. If the output looks wrong, the partition table might be corrupted, not the command.

Check usage and mounts with df

df checks filesystem usage and mount points. It tells you how much space is used, how much is available, and where the filesystem is mounted. This is the command you run when you suspect a disk is full or when you need to verify that a mount point is active.

Here's how to check disk usage with human-readable sizes and filesystem types.

df -hT
# -h formats sizes in human-readable units like GB and MB
# -T adds the filesystem type column to the output
# This command shows usage percentage and available space for all mounted filesystems
# It reads mount information from /proc/mounts and filesystem stats

df only shows mounted filesystems. If a partition exists but isn't mounted, df won't list it. Use lsblk to find unmounted partitions.

Check df before you blame the hardware. A full filesystem causes write errors that look like disk failure.

Decode LVM and mapper devices

Fedora Workstation and Server use LVM by default. You will see /dev/mapper/fedora-root and /dev/mapper/fedora-swap in lsblk output. These are logical volumes managed by LVM. The underlying physical disks are abstracted away.

To inspect the LVM layer, use lvs, vgs, and pvs. These commands are part of the lvm2 package installed by default.

Here's how to list logical volumes and see which physical devices they map to.

lvs -o +devices
# lvs lists logical volumes in volume groups
# -o +devices appends the underlying physical volume path to the output
# This reveals how logical volumes map to physical disks
# Essential for understanding Fedora's default storage layout

If you need to see the volume groups and their physical volume members, run vgs.

vgs -o +devices
# vgs lists volume groups and their properties
# -o +devices adds the physical volume paths to the output
# This shows which physical disks contribute to each volume group
# Helps identify if a RAID member or disk is missing from the group

LVM is the default on Fedora Workstation. Trust the mapper devices; they are safe to mount and use.

Find stable identifiers with blkid

Device names like /dev/sda can change between boots. USB ports, kernel enumeration order, and hardware changes can shift names. Configuration files should never rely on device names. Use UUIDs instead.

blkid prints the UUID, filesystem type, and label of a partition. UUIDs are stable identifiers that survive reboots and hardware changes.

Here's how to find the UUID of a partition for use in configuration files.

sudo blkid /dev/nvme0n1p2
# sudo is required to read superblock metadata on block devices
# blkid prints the UUID, filesystem type, and label of the partition
# UUIDs are the stable identifiers used in /etc/fstab for mounting
# Device names like /dev/sda can change between boots; UUIDs do not

Fedora's /etc/fstab uses UUIDs by default. Never edit /etc/fstab to use /dev/sda. Edit /etc/fstab to use UUID=.... Files in /etc/ are user-modified. Files in /usr/lib/ ship with packages. Edit /etc/. Never edit /usr/lib/.

UUIDs survive reboots and hardware changes. Device names do not. Use UUIDs in configuration files.

Verify mounts with findmnt

When you are debugging mount issues, findmnt is the source of truth. It displays the kernel's view of active mounts, including mount options and bind mounts. lsblk shows what the block layer thinks is mounted. findmnt shows what the VFS actually has mounted.

Here's how to verify mount options and sources for all active mounts.

findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS
# findmnt displays a tree of mounted filesystems
# -o selects columns to show target path, source device, type, and mount options
# This confirms the kernel's view of active mounts matches your expectations
# Useful for verifying read-only mounts or bind mounts

If lsblk shows a mount point but findmnt does not, the mount failed or was unmounted. If you see ro in the options column, the filesystem is mounted read-only. Check journalctl -xe for filesystem errors that triggered a remount to read-only.

findmnt is the source of truth for mounts. If lsblk shows a mount but findmnt doesn't, the mount failed.

Common pitfalls and error messages

You will encounter specific errors when working with disks. Knowing what they mean saves time.

If you try to mount a device and see can't read superblock, the filesystem is likely corrupted or you specified the wrong device.

mount: /dev/sdb1: can't read superblock.

Run lsblk to verify the device name and filesystem type. Run sudo blkid /dev/sdb1 to check if the kernel recognizes the filesystem. If blkid returns nothing, the partition table or filesystem might be damaged.

If you see mount point does not exist, the directory you are trying to mount to hasn't been created.

mount: /mnt/usb: mount point does not exist.

Create the directory with sudo mkdir -p /mnt/usb before mounting.

Local disk listing is rarely blocked by SELinux. If you see access denied errors on mounted files, check journalctl -t setroubleshoot for denials before disabling security policies. SELinux denials show up in journalctl -t setroubleshoot with a one-line summary. Read those before disabling SELinux.

UUIDs survive reboots and hardware changes. Device names do not. Use UUIDs in configuration files.

Which tool to use

Use lsblk when you need a quick hierarchy of devices, partitions, and mounts without root privileges.

Use fdisk -l when you need to inspect partition table metadata, sector boundaries, or partition types on a specific device.

Use df -hT when you need to check filesystem usage, available space, and mount points for capacity planning.

Use findmnt when you need to verify mount options or debug why a filesystem isn't accessible.

Use lvs and vgs when you are working with LVM logical volumes and need to map them to physical storage.

Use blkid when you need to find the UUID or filesystem type of a partition for /etc/fstab configuration.

Where to go next