How to Find Hard Drive Info on Linux


If you have ever stared at a Linux terminal wondering, “Which drive is which, why is this one called /dev/nvme0n1, and why does the other one sound like a robot serial number?” welcome to the club. Linux is incredibly good at showing storage information, but it expects you to know which tool answers which question. One command tells you the drive size, another tells you the filesystem, another shows what is mounted, and yet another whispers whether your disk is quietly plotting its own retirement.

The good news is that finding hard drive info on Linux is not hard once you know the right commands. In fact, Linux gives you several layers of visibility. You can see physical disks, partitions, filesystems, mount points, UUIDs, health data, and even NVMe-specific details. The trick is knowing where to start and when to go deeper.

This guide walks through the most useful ways to check hard drive information on Linux, with practical examples you can actually use. Whether you are troubleshooting a missing drive, identifying a disk before mounting it, checking free space, or making sure you are not about to partition the wrong device and ruin your afternoon, this article has you covered.

Why Hard Drive Info Matters on Linux

On Linux, storage is not just “Disk C” and “Disk D.” Devices appear with names such as /dev/sda, /dev/sdb, or /dev/nvme0n1. Partitions become things like /dev/sda1 or /dev/nvme0n1p1. Once you add logical volumes, removable drives, or cloud disks, the plot thickens fast.

Knowing how to find hard drive info on Linux helps you answer questions like these:

  • How many drives are installed?
  • Which one is the SSD, and which one is the external backup disk?
  • What filesystem is on this partition?
  • Where is the drive mounted?
  • How much free space is left?
  • Does the disk look healthy?
  • Which UUID should go in /etc/fstab?

That is a lot of questions for one article, but Linux has answers for all of them. Sometimes in elegant fashion. Sometimes in “why are there four commands for this?” fashion. Either way, the answers are there.

The Fastest Way to Check Drive Info

If you want the short version, start with this command:

This is the best first stop for most users. It gives you a clean tree view of block devices, showing disks and their partitions. You can quickly see names, sizes, types, and mount points. It is the Linux equivalent of flipping on the lights before doing anything dumb.

A typical output might look something like this:

From this alone, you can already tell a lot. You can see the drive names, sizes, partition layout, and mount points. For many basic tasks, lsblk is enough.

Make lsblk More Useful

Run it with a few extra options and it becomes even better:

This shows filesystem details such as:

  • Filesystem type
  • Label
  • UUID
  • Mount point

That is extremely helpful when you need to identify a partition by more than just its size. Two 500 GB drives can look annoyingly identical, but the one labeled backup or carrying the UUID from your fstab file is much easier to recognize.

You can also use:

This creates a more customized output. It is especially handy if you want both the logical structure and some human-friendly clues like the device model.

How to See Detailed Partition Information

When you need more than a quick overview, use:

This command lists partition tables in greater detail. It is useful when you want sector counts, partition types, disk identifiers, and a fuller picture of how a drive is divided. If lsblk is the polite front desk, fdisk -l is the back office with the filing cabinets open.

It is especially useful when you are:

  • verifying a new disk before formatting it
  • checking whether a partition table exists
  • reviewing GPT or MBR partition structure
  • confirming partition sizes before resizing or cloning

Be careful, though: fdisk can do more than list information. The -l option is safe because it only displays data, but the interactive tool can modify partitions. Translation: read first, click later, panic never.

How to Find Filesystem Type, UUID, and Label

If your goal is to identify the filesystem metadata, use:

This command is excellent for finding a partition’s UUID, label, and filesystem type. It is one of the most useful commands when editing /etc/fstab, creating reliable mounts, or verifying that a partition is really the one you think it is.

Example:

You might see output like:

This matters because device names can change. A drive that appears as /dev/sdb today might show up as /dev/sdc tomorrow after hardware changes, BIOS differences, or cloud reshuffling. UUIDs and labels are far more reliable for permanent configuration.

How to See What Is Mounted and Where

If you care less about the raw device and more about what is actually mounted, use:

This command shows mounted filesystems along with the source device, target mount point, filesystem type, and mount options. It is ideal when you are trying to answer questions like:

  • Is this drive mounted?
  • Where did it get mounted?
  • What filesystem type is in use?
  • What mount options were applied?

Useful examples include:

This is the command you use when Linux says a drive exists but you are not sure whether it is active, accessible, or hiding in plain sight under some mount path you forgot about two weeks ago.

How to Check Disk Space Usage

To see used and available storage space, run:

If you also want the filesystem type:

The -h option makes the output human-readable, which is a polite way of saying it stops yelling raw block counts at you like it is 1987. This command focuses on mounted filesystems, not the underlying disk layout. That makes it perfect for answering “How full is this filesystem?” but not ideal for mapping raw partitions.

Typical output:

If you are running out of space, df -hT is usually the fastest way to confirm where the pain is coming from.

How to See Hardware-Level Drive Details

If you want more hardware-oriented information, try:

This can reveal:

  • device model
  • vendor
  • bus info
  • serial information in some cases
  • storage controller details

This is helpful when lsblk tells you the Linux-side structure but you want a stronger clue about the physical device itself. If you have multiple disks from different vendors, lshw can help separate the mystery drive from the one you actually intended to inspect.

You can also use:

That output is easier to scan when you just want a quick hardware inventory.

How to Check Disk Health with SMART

Knowing a drive exists is one thing. Knowing whether it is healthy is another. For that, use smartctl, which is part of the smartmontools package.

This can show health status, SMART attributes, error logs, and self-test data, depending on the drive and controller. If a drive is starting to fail, this is one of the first places you should look.

For example:

For NVMe devices, the command syntax may differ slightly depending on the tool version and the device path, but the idea is the same: ask the drive how it is feeling before trusting it with your family photos, production database, or semester project.

How to Find NVMe Drive Info on Linux

NVMe drives have their own naming style, and Linux provides specialized tools for them. If your system uses NVMe SSDs, install nvme-cli and run:

This command is great for listing NVMe devices, models, serial numbers, namespace information, usage, and firmware revision. It is more informative than generic tools when you are specifically dealing with NVMe hardware.

You can go deeper with commands like:

These are especially useful in servers, workstations, and cloud environments where NVMe devices are common and generic device names are not descriptive enough.

How to Identify Cloud or Virtual Drives

In cloud environments such as AWS, attached storage may appear with NVMe names that do not obviously match the volume name you expected. In those cases, start with:

Then, if supported by the image or tools available, use commands such as:

This can help map an NVMe device back to the cloud volume ID or expected device mapping. In other words, it helps answer the deeply modern question: “Which of these anonymous, high-speed rectangles is my actual storage volume?”

Why UUIDs and Persistent Names Matter

One of the most important Linux storage lessons is this: do not rely too heavily on names like /dev/sdb1 for permanent configuration.

Those names can change. If you add a new disk, switch controllers, move to another VM type, or simply reboot into a slightly different hardware order, the names may shift. That is why persistent identifiers such as UUID, label, WWID, or PARTUUID matter so much.

For example, in /etc/fstab, this is safer:

Than this:

That little change can save you a lot of confusion later. Linux admins do not become cautious by accident. Usually a disk name moved once, and now they trust UUIDs like old friends.

A Practical Workflow for Finding Hard Drive Info

When you are not sure where to begin, use this simple workflow:

  1. Run lsblk to see all drives and partitions.
  2. Run lsblk -f to see filesystems, UUIDs, and labels.
  3. Run sudo fdisk -l if you need partition-table detail.
  4. Run findmnt to confirm what is mounted and where.
  5. Run df -hT to check space usage on mounted filesystems.
  6. Run sudo blkid if you need exact filesystem identifiers.
  7. Run sudo smartctl -a /dev/sdX or sudo nvme list for health and hardware-specific detail.

That sequence covers almost every everyday storage-inspection task on Linux without turning your terminal session into a side quest.

Common Mistakes to Avoid

Confusing disks with partitions

/dev/sda is usually the whole disk. /dev/sda1 is a partition on that disk. The same logic applies to NVMe drives, though the names look a bit more dramatic.

Using only df when you need raw disk layout

df shows mounted filesystem usage, not the full physical disk structure. For layout, use lsblk or fdisk -l.

Trusting /dev/sdX names forever

For scripts and permanent mounts, use UUIDs, labels, or other persistent identifiers instead of device names that may change.

Forgetting root privileges

Some commands show more detail only when run with sudo. If the output looks suspiciously incomplete, permissions may be the reason.

Real-World Experiences and Lessons from Linux Storage Work

In real-world Linux use, hard drive inspection usually starts as a simple question and quickly turns into detective work. Someone plugs in an external drive and asks why it does not appear in the file manager. Another user launches a server and finds that the expected data volume is not mounted. A developer clones a machine image, boots it, and suddenly two filesystems look strangely similar. This is where basic storage commands stop being “nice to know” and become essential.

One common experience is discovering that lsblk gives clarity faster than almost anything else. People often spend time checking cables, rebooting, or blaming Linux for being mysterious, when the drive is actually visible the whole time and simply has no mount point yet. Running lsblk -f often reveals the truth immediately: the disk exists, the partition exists, the filesystem exists, but nothing is mounted. That is not a disaster. That is just Linux waiting for instructions.

Another frequent lesson comes from editing /etc/fstab. Newer Linux users often paste a device path like /dev/sdb1 into the file because it looks obvious and convenient. Then they reboot, hardware order changes, and the mount either fails or points to the wrong device. After that kind of scare, many users become loyal supporters of UUIDs. It is one of those classic Linux growth moments: mildly annoying the first time, deeply educational forever after.

Server administrators also learn that health checks matter just as much as identification. A disk can be present, mounted, and full of important data while quietly logging errors in SMART output. In practice, commands like smartctl -H and smartctl -a are not just for emergencies. They are preventive tools. The best time to notice storage trouble is before the drive notices it for you.

Cloud environments add their own twist. On virtual machines, especially those using NVMe-backed storage, the expected device name in documentation may not match the one Linux shows after boot. That can feel unsettling at first, but it is normal. Experienced users learn to combine lsblk, UUID checks, and provider-specific tools to map the device accurately instead of guessing. Guessing with storage is a terrible hobby.

The bigger lesson is that Linux storage tools complement one another. No single command tells the whole story every time. lsblk shows structure, blkid shows identity, findmnt shows active mounts, df shows capacity, and smartctl shows health. Once you understand that, finding hard drive info on Linux stops feeling complicated. It starts feeling systematic, and that is when Linux becomes a lot less intimidating and a lot more useful.

Conclusion

If you want to find hard drive info on Linux, the smartest place to start is lsblk. From there, move to blkid for UUIDs and filesystem details, findmnt for mounted filesystems, df -hT for free space, fdisk -l for partition tables, and smartctl or nvme-cli for health and advanced hardware data.

Once you learn what each command is best at, Linux storage stops looking like a pile of cryptic device names and starts looking like a well-organized system. A nerdy system, yes. But a well-organized one.