How to List Disks and Check Disk Type in Linux

Last reviewed: by
How to List Disks and Check Disk Type in Linux

Linux can show several different kinds of disk information, and they are often confused with each other. A disk can be HDD or SSD, SATA or NVMe, physical or virtual, local or SAN-backed, partitioned as GPT or MBR, and formatted with a filesystem such as ext4 or XFS.

This guide focuses on the practical commands you can use to answer these common questions:

  • How do I list all disks in Linux?
  • Is my disk HDD or SSD?
  • What disk interface or transport is Linux using?
  • What is the disk model and serial number?
  • Which disk contains mounted filesystems?
  • Why does Linux show scsi, VBOX HARDDISK, or LOGICAL VOLUME instead of the expected physical disk type?

The commands below were tested on a Linux virtual machine with util-linux 2.40.2, pciutils 3.13.0, GNU parted 3.6, and hdparm 9.65. The test host has VirtualBox disks, so your disk names, models, serial numbers, and interface values will be different on physical servers, cloud instances, hardware RAID, SAN, or NVMe systems. If you are building a similar lab, see how to install Oracle VirtualBox on Linux.

NOTE
For a quick answer, start with lsblk -d -e 7 -o NAME,TYPE,SIZE,ROTA,TRAN,MODEL,SERIAL. It lists disks, excludes loop devices, shows the rotational flag, and shows the transport type when the kernel exposes it.

Disk Type Terms You Should Know

Before running commands, separate these terms:

Term What it tells you Example
Disk device The Linux block device name /dev/sda, /dev/nvme0n1, /dev/vda
Media type Whether the storage is rotational or non-rotational HDD or SSD
Interface or transport How the disk is attached or presented SATA, SAS, NVMe, USB, FC, ATA
Controller The PCI or virtual storage controller SATA controller, RAID controller, NVMe controller
Partition table How partitions are described GPT or MBR
Filesystem How data is stored inside a partition or volume ext4, XFS, Btrfs

If you want a deeper explanation of disk interfaces such as SATA, SAS, NVMe, and Fibre Channel, see different disk types and interface types in Linux.


Quick Command Summary

Task Command
List physical disks lsblk -d -e 7 -o NAME,TYPE,SIZE,ROTA,TRAN,MODEL,SERIAL
Show filesystems and mount points lsblk -f -e 7
Check HDD vs SSD flag cat /sys/block/sda/queue/rotational
Check disk transport from udev udevadm info --query=property --name=/dev/sda
Show stable disk IDs ls -l /dev/disk/by-id
Show storage controllers `lspci
Show hardware storage tree sudo lshw -class storage -class disk -short
Show partition table sudo fdisk -l /dev/sda
Show disk model with parted sudo parted -s /dev/sda print
Show ATA identify data sudo hdparm -I /dev/sda

1. List Physical Disks with lsblk

Use lsblk first when you want to list disks in Linux. The -d option prints only top-level devices, and -e 7 excludes loop devices, which are commonly used by snaps and images.

bash
lsblk -d -e 7 -o NAME,TYPE,SIZE,ROTA,TRAN,MODEL,SERIAL

Tested output:

text
NAME TYPE  SIZE ROTA TRAN   MODEL         SERIAL
sda  disk   25G    1 sata   VBOX HARDDISK VBb7d23215-c8334f15
sdb  disk   20G    1 sata   VBOX HARDDISK VB0e1b8e8f-685c2d06
sdc  disk 15.7G    1 sata   VBOX HARDDISK VB09775bdd-e0a42677
sr0  rom  50.7M    0 ata    VBOX CD-ROM   VB2-01700376

How to read the important columns:

  • NAME is the kernel block device name.
  • TYPE shows whether the device is a disk, partition, ROM device, LVM device, or loop device.
  • SIZE shows the disk size.
  • ROTA shows whether the device is rotational. 1 usually means HDD; 0 usually means SSD, NVMe, or other non-rotational storage.
  • TRAN shows the transport when Linux can detect it, such as sata, ata, usb, nvme, sas, or fc.
  • MODEL and SERIAL help identify the device.

In this tested output, sda, sdb, and sdc are VirtualBox hard disks exposed through a SATA transport. sr0 is a virtual CD-ROM device, not a hard disk.

IMPORTANT
The ROTA value comes from what the kernel reports. It is a very useful first check, but virtual disks, hardware RAID, SAN volumes, and some USB enclosures may not expose the real physical media accurately. For storage abstraction examples, see the guides to configure software RAID 1 in Linux and configure iSCSI target and initiator on Linux.

2. List Disks, Partitions, Filesystems, and Mount Points

Use lsblk -f when you want to see which disks contain filesystems and mount points. This is helpful when the search intent is broader, such as "linux list disks" or "linux view all disks".

bash
lsblk --ascii -f -e 7

Tested output:

text
NAME                      FSTYPE      FSVER            LABEL          UUID                                   FSAVAIL FSUSE% MOUNTPOINTS
sda
|-sda1
|-sda2                    ext4        1.0                             c254a326-948a-4ae2-993b-1659f4ddcf03      1.6G    11% /boot
`-sda3                    LVM2_member LVM2 001                        xLar7A-0CSb-mAmp-Y2sy-s6KG-FtEP-kIBAUL
  `-ubuntu--vg-ubuntu--lv ext4        1.0                             72457fae-1731-4c94-b5c1-ac4564f4311c      3.3G    87% /
sdb                       LVM2_member LVM2 001                        fqCkHE-uhfu-TAWI-mbbp-KdrD-qFDZ-3HE08V
`-ubuntu--vg-ubuntu--lv   ext4        1.0                             72457fae-1731-4c94-b5c1-ac4564f4311c      3.3G    87% /
sdc
sr0                       iso9660     Joliet Extension VBox_GAs_7.2.0 2025-08-13-20-48-09-62                       0   100% /media/golinuxcloud/VBox_GAs_7.2.0

This output shows that:

  • /dev/sda2 is an ext4 filesystem mounted on /boot.
  • /dev/sda3 and /dev/sdb are LVM physical volumes.
  • ubuntu--vg-ubuntu--lv is an LVM logical volume mounted on /; see the Logical Volume Manager guide if you need to interpret or manage LVM layers.
  • /dev/sdc is visible but has no filesystem or mount point in this output; the next step would be to create a filesystem on a Linux partition or logical volume if the disk is meant to store data.
  • /dev/sr0 is an ISO9660 CD-ROM mounted under /media.

For partitioning work, see the parted command examples. To identify an existing filesystem type in more detail, use the commands to check filesystem type in Linux. For encrypted disks, see how to mount a LUKS encrypted disk partition.


3. Check if a Disk is HDD or SSD with sysfs

Linux exposes the rotational flag in sysfs. This is the direct source behind the ROTA value shown by lsblk.

bash
cat /sys/block/sda/queue/rotational

Tested output:

text
1

Meaning:

  • 0 means the device is reported as non-rotational. This is usually SSD, NVMe, RAM-backed, or another flash-based device.
  • 1 means the device is reported as rotational. This is usually HDD.

To check several disks at once, you can read the same file for each disk:

bash
for disk in sda sdb sdc sr0; do printf "%s=%s\n" "$disk" "$(cat /sys/block/$disk/queue/rotational)"; done

Tested output:

text
sda=1
sdb=1
sdc=1
sr0=0

In this test host, the VirtualBox disks are reported as rotational. On a system with an NVMe SSD, you would normally expect ROTA or rotational to be 0 for the NVMe disk. After confirming HDD vs SSD, you may also want to review the Linux I/O scheduler configuration because scheduler choices can differ for rotational and non-rotational storage.


4. Check Disk Interface Type with udevadm

udevadm can show device properties collected by udev. This is useful when you want to confirm whether a disk is exposed as ATA, USB, SCSI, NVMe, or another bus type.

bash
udevadm info --query=property --name=/dev/sda | grep -E '^(DEVTYPE|ID_BUS|ID_MODEL|ID_SERIAL|ID_ATA|ID_TYPE|ID_PATH)='

Tested output:

text
DEVTYPE=disk
ID_ATA=1
ID_TYPE=disk
ID_BUS=ata
ID_MODEL=VBOX_HARDDISK
ID_SERIAL=VBOX_HARDDISK_VBb7d23215-c8334f15
ID_PATH=pci-0000:00:0d.0-ata-1.0

Here, ID_BUS=ata and ID_ATA=1 show that Linux sees /dev/sda as an ATA-style disk device. The model and serial values identify the virtual disk exposed by VirtualBox.


5. Check Stable Disk Names Under /dev/disk/by-id

Linux device names such as /dev/sda can change after reboot or when disks are added. For scripts and mount configuration, stable names under /dev/disk/by-id are often safer.

bash
ls -l /dev/disk/by-id | sed -n '1,8p'

Tested output:

text
total 0
lrwxrwxrwx 1 root root  9 Jun  7 13:55 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0
lrwxrwxrwx 1 root root  9 Jun  7 13:55 ata-VBOX_HARDDISK_VB09775bdd-e0a42677 -> ../../sdc
lrwxrwxrwx 1 root root  9 Jun  7 13:55 ata-VBOX_HARDDISK_VB0e1b8e8f-685c2d06 -> ../../sdb
lrwxrwxrwx 1 root root  9 Jun  7 13:55 ata-VBOX_HARDDISK_VBb7d23215-c8334f15 -> ../../sda
lrwxrwxrwx 1 root root 10 Jun  7 13:55 ata-VBOX_HARDDISK_VBb7d23215-c8334f15-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Jun  7 13:55 ata-VBOX_HARDDISK_VBb7d23215-c8334f15-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Jun  7 13:55 ata-VBOX_HARDDISK_VBb7d23215-c8334f15-part3 -> ../../sda3

These symlinks also reveal useful interface hints. In this example, the disk IDs start with ata-, matching the ATA/SATA-style virtual disks shown by other commands. Stable IDs are also useful when you mount a filesystem without fstab using systemd.


6. Check Storage Controller Type with lspci

lspci shows PCI devices, including physical and virtual storage controllers. This is useful when the disk itself does not expose a clear transport value.

bash
lspci | grep -Ei 'sata|scsi|raid|nvme|storage|ide|fibre'

Tested output:

text
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:0d.0 SATA controller: Intel Corporation 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (rev 02)

This output shows that the test system has an IDE controller and a SATA controller. On other systems you may see NVMe controllers, RAID controllers, Fibre Channel adapters, or SAS controllers. If your disks are presented through RAID, compare this output with the storage layout in the hybrid software RAID 10 tutorial.


7. Check Storage Hardware with lshw

lshw gives a hardware-oriented view of storage devices and controllers. It may require root privileges for complete output.

bash
sudo lshw -class storage -class disk -short

Tested output:

text
H/W path            Device      Class       Description
=======================================================
/0/100/1.1          scsi1       storage     82371AB/EB/MB PIIX4 IDE
/0/100/1.1/0.0.0    /dev/cdrom  disk        CD-ROM
/0/100/1.1/0.0.0/0  /dev/cdrom  disk
/0/100/d            scsi2       storage     82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode]
/0/100/d/0          /dev/sda    disk        26GB VBOX HARDDISK
/0/100/d/0.0.0      /dev/sdc    disk        16GB VBOX HARDDISK

Notice that lshw shows scsi2 in the hardware path even though the controller description is SATA. This happens because Linux commonly presents ATA/SATA disks through the SCSI disk layer. Do not treat every scsi path as proof that the physical drive is SCSI.


8. Check Partition Table and Disk Model with fdisk

fdisk -l is useful when you need disk size, sector size, partition table type, and partition layout.

bash
sudo fdisk -l /dev/sda

Tested output:

text
Disk /dev/sda: 25 GiB, 26843545600 bytes, 52428800 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 11CF50F0-B005-448C-8236-1E182128FC30

Device       Start      End  Sectors Size Type
/dev/sda1     2048     4095     2048   1M BIOS boot
/dev/sda2     4096  4198399  4194304   2G Linux filesystem
/dev/sda3  4198400 52426751 48228352  23G Linux filesystem

This confirms that /dev/sda uses a GPT partition table and has three partitions. It also shows the disk model that the OS sees. For partition table backup and restore, see how to backup and restore a partition table with sfdisk. If the root filesystem later needs more space, see how to resize a root LVM partition.


9. Check Disk Model and Partition Table with parted

parted gives another view of the disk model, sector size, partition table, and partitions.

bash
sudo parted -s /dev/sda print

Tested output:

text
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 26.8GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  2150MB  2147MB  ext4
 3      2150MB  26.8GB  24.7GB

The line Model: ATA VBOX HARDDISK (scsi) is a good example of why disk interface output needs context. The disk model is ATA-style, while the access path appears through the SCSI layer.


10. Check ATA Disk Details with hdparm

hdparm -I asks an ATA disk for identification data. It is useful for SATA and ATA devices, but it is not the right tool for every storage type.

bash
sudo hdparm -I /dev/sda

Tested output:

text
/dev/sda:

ATA device, with non-removable media
        Model Number:       VBOX HARDDISK
        Serial Number:      VBb7d23215-c8334f15
        Firmware Revision:  1.0
Standards:
        Used: ATA/ATAPI-6 published, ANSI INCITS 361-2002
        Supported: 6 5 4
Configuration:
        Logical         max     current
        cylinders       16383   16383
        heads           16      16

If you run hdparm -I against a disk that does not speak ATA, you may get an ioctl error instead of useful disk details. For NVMe disks, use lsblk for a quick listing and the optional nvme command from nvme-cli for controller-specific details.


11. Optional Tools: smartctl and nvme-cli

Some storage tools are excellent but may not be installed by default. On the test host used for this article, both smartctl and nvme were not installed:

bash
command -v smartctl || echo "smartctl: not installed"
command -v nvme || echo "nvme: not installed"

Tested output:

text
smartctl: not installed
nvme: not installed

When available, smartctl -a /dev/sdX can show SMART health data, rotation rate, model, serial number, temperature, and error logs for supported devices. For NVMe drives, nvme list and nvme id-ctrl /dev/nvme0 can show NVMe-specific controller and namespace details.

Because these commands were not available on this test host, this article does not include untested smartctl or nvme sample output.


Frequently Asked Questions

1. What is the fastest command to list disks in Linux?

lsblk -d -e 7 -o NAME,TYPE,SIZE,ROTA,TRAN,MODEL,SERIAL is a fast command to list physical disks while excluding loop devices.

2. How do I check if a Linux disk is SSD or HDD?

Check the ROTA column from lsblk or read the rotational value from sysfs. ROTA 0 usually means non-rotational storage such as SSD or NVMe, while ROTA 1 usually means rotational HDD.

3. How do I check disk interface type in Linux?

Use lsblk with the TRAN column, udevadm properties such as ID_BUS, lspci storage controller output, or hdparm -I for ATA disks.

4. Why does parted show scsi for a SATA disk?

Many SATA disks are handled through the Linux SCSI disk layer, so tools may show a SCSI path even when the physical or virtual disk transport is ATA or SATA.

5. Why does Linux show VBOX HARDDISK or LOGICAL VOLUME instead of the real disk model?

Virtual machines and hardware RAID controllers often expose a virtual disk or logical volume to Linux, so the guest OS may not see the real physical drive model.

6. Can lsblk detect NVMe disks?

Yes. NVMe disks usually appear as names such as nvme0n1, and lsblk can show them. For deeper NVMe controller details, use the optional nvme-cli package when installed.

Summary

To list disks in Linux, start with lsblk. To check whether a disk is HDD or SSD, inspect the ROTA column or /sys/block/<disk>/queue/rotational. To check disk interface type, compare lsblk TRAN, udevadm ID_BUS, lspci controller output, and hardware tools such as lshw or hdparm.

The most reliable answer often comes from combining multiple commands. This is especially important on virtual machines, cloud servers, SAN storage, and hardware RAID, where Linux may see a virtual disk or logical volume instead of the actual physical drive.

Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, …

  • Red Hat Certified System Administrator in Red Hat OpenStack
  • Certified Kubernetes Application Developer (CKAD)
  • Red Hat Certified Specialist in Ansible Automation
  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security