Linux Hard Disk Interfaces and Device Naming
Learn how PATA, SATA, and SCSI interfaces work, how Linux names disks and partitions, and why UUIDs provide stable storage references.
A disk interface is the hardware connection and communication protocol between a storage drive and a computer system. The interface determines how the drive exchanges data with the controller. It does not determine how the disk is partitioned, which filesystem is used, or where the filesystem is mounted.
For example, a SATA disk may contain an MBR partition table, an ext4 filesystem, and a mount point such as /home. SATA is the physical and protocol connection; MBR is the partition-table format; ext4 is the filesystem; and /home is a mount point. These are separate storage concepts.
This lesson focuses on three important interface families: PATA, SATA, and SCSI. PATA and parallel SCSI are mainly legacy technologies, but their naming conventions remain important when reading older Linux documentation and administering older systems.
PATA, IDE, and Parallel ATA
PATA means Parallel Advanced Technology Attachment. It is commonly associated with older IDE hard drives and controllers. The terms IDE and ATA were often used together in older computer hardware descriptions, although IDE originally described an integrated-drive-electronics design and ATA described the interface standard.
PATA transfers several bits of data in parallel across multiple conductors. Older PATA drives commonly used a wide ribbon cable. A single cable could connect two drives, so the drives traditionally had to be configured as master and slave, or use cable select. These labels described device roles on the cable; they did not mean that one disk controlled the other.
PATA was widespread in older desktop and laptop systems. It was largely superseded by SATA, which uses narrower cables and a separate data connection for each drive.
Traditional Linux systems commonly represented PATA disks with names such as:
/dev/hda— the first detected PATA or IDE disk/dev/hdb— the second detected PATA or IDE disk/dev/hda1— the first partition on/dev/hda/dev/hda2— the second partition on/dev/hda
These names identify the kernel device node, not a filesystem or mount point.
SATA and Serial ATA
SATA means Serial Advanced Technology Attachment. It sends data serially over a high-speed link rather than sending several bits simultaneously over a parallel bus. Serial transmission does not automatically mean slower transmission: SATA's signaling design, clock rates, cable arrangement, and protocol features made it practical and fast for modern storage.
A typical SATA data cable connects one drive to one controller port. This avoids the traditional two-drive shared-cable arrangement used by PATA. SATA became the common successor to PATA for many internal hard disks and solid-state drives.
Linux commonly exposes SATA disks through the SCSI storage layer. Consequently, a SATA disk often uses an /dev/sdX name:
/dev/sda— one detected SCSI-style disk, often a SATA disk/dev/sda1— the first partition on that disk/dev/sda2— the second partition on that disk
The sd prefix means that Linux is using SCSI-style block-device naming. It does not prove that the physical drive is SCSI hardware.
SCSI
SCSI means Small Computer System Interface. It is a family of hardware interfaces and protocols historically used in servers, workstations, and higher-end storage systems.
Traditional SCSI systems used a bus to connect multiple devices. Depending on the SCSI implementation, a bus commonly supported up to 8 or 16 devices. Bus termination and device addressing were important parts of configuring older SCSI installations.
Linux uses names such as /dev/sda, /dev/sdb, and /dev/sdc for SCSI-style disks. Their partitions use numbers:
/dev/sda— the first disk assigned in this naming sequence/dev/sdb— the second disk assigned in this naming sequence/dev/sda1— the first partition on/dev/sda/dev/sdb2— the second partition on/dev/sdb
Modern Linux may use this same naming family for physical SCSI devices, SATA disks, USB mass-storage devices, many virtual disks, and other devices presented through the SCSI subsystem.
Comparison of Common Disk Interfaces
| Interface | Expanded name | Transfer model | Typical historical use | Connection/device characteristics | Typical Linux naming |
|---|---|---|---|---|---|
| PATA | Parallel Advanced Technology Attachment | Several data bits transferred in parallel | Older desktop and laptop IDE drives | Shared ribbon cable; traditionally master/slave or cable-select roles | /dev/hda, /dev/hda1 |
| SATA | Serial Advanced Technology Attachment | Data transferred serially over a high-speed link | Many internal hard drives and SSDs | Normally one drive per data cable and controller port | /dev/sda, /dev/sda1 |
| SCSI | Small Computer System Interface | Protocol family with historical shared-bus designs | Servers, workstations, and higher-end storage | Multiple devices could share a bus; limits depended on the implementation | /dev/sda, /dev/sdb |
Linux Block Devices and Device Nodes
A block device is a Linux device that provides storage access in blocks of data. Device nodes for disks and partitions normally appear below /dev. These entries provide a path through which programs can inspect or access the underlying storage.
For many disk naming families, the pattern is a disk name followed by a partition number. The whole disk is represented by the base name, while a partition adds a number:
/dev/sda— whole disk/dev/sda1— first partition/dev/sda2— second partition
Historically, PATA devices commonly used /dev/hdX, such as /dev/hda and /dev/hdb. SCSI-style devices use /dev/sdX, such as /dev/sda and /dev/sdb.
Device letters can change when hardware is added, removed, or discovered in a different order. Therefore, /dev/sda is not a permanent identity and does not necessarily mean a particular physical port or disk.
Partitions, Filesystems, and Mount Points
A physical disk can be divided into multiple partitions. A partition is a logical subdivision of the disk. For example, /dev/sda might contain /dev/sda1 and /dev/sda2.
A partition table records the boundaries and types of partitions. MBR, or Master Boot Record, is a legacy partition-table scheme used by many older systems. Newer systems commonly use GPT, but the physical interface and Linux device naming remain separate from the partition-table format.
A partition may contain a filesystem, such as ext4, or it may be formatted as a Linux swap area. A swap partition is used for virtual-memory swap and is not mounted as an ordinary filesystem. For example, /dev/sda2 could be designated as swap.
A mount point is a directory where Linux makes a filesystem available. Thus, a typical chain might be:
- Physical interface: SATA
- Disk device:
/dev/sda - Partition:
/dev/sda1 - Filesystem: ext4
- Mount point:
/home
Storage Layers and Their Roles
| Layer | Examples | What it describes |
|---|---|---|
| Physical interface | PATA, SATA, SCSI, USB, NVMe | How the storage device communicates with the system |
| Disk device | /dev/sda, /dev/hda | The whole block device exposed by Linux |
| Partition table | MBR, GPT | How boundaries and partition metadata are recorded |
| Partition | /dev/sda1, /dev/hda2 | A logical subdivision of a disk |
| Filesystem or swap | ext4, XFS, swap | How a partition is organized for files or virtual-memory use |
| Persistent identifier | UUID, LABEL, /dev/disk/by-id | A more stable way to refer to storage than a volatile device letter |
Stable Identifiers: UUID, LABEL, and by-id
A UUID is a persistent identifier associated with a filesystem or swap area. A filesystem may also have a human-readable label. Linux additionally provides symbolic links under /dev/disk/by-id and /dev/disk/by-uuid.
These identifiers are preferred for persistent configuration because a device letter can change. For example, a system configured with /dev/sda2 for swap may fail to activate swap if another disk is discovered first. Referencing the swap UUID avoids depending on the letter assignment.
The /etc/fstab file can configure filesystems and swap using UUIDs or labels. A swap entry may follow this pattern:
UUID=<identifier> none swap sw 0 0
Inspecting Disks and Partitions
Use read-only inspection commands before changing a disk. The following command presents device names, device types, sizes, transport information when available, models, filesystem types, UUIDs, and mount points:
lsblk -o NAME,TYPE,SIZE,TRAN,MODEL,FSTYPE,UUID,MOUNTPOINTS
To inspect partition tables and layouts, use:
sudo fdisk -l
fdisk -l lists information without modifying disks. Be especially careful with partitioning commands that omit the listing option or that are used to write changes.
To display filesystem and swap identifiers, use:
blkid
To inspect stable symbolic links, use:
ls -l /dev/disk/by-id /dev/disk/by-uuid
The kernel's recognized block devices and partitions can also be viewed with:
cat /proc/partitions
Modern Naming Context
PATA and parallel SCSI are primarily legacy technologies in current desktop systems. SATA, USB mass-storage devices, virtual disks, and actual SCSI devices may all appear as /dev/sdX.
NVMe uses a different naming format. A complete NVMe disk commonly appears as /dev/nvme0n1, and its first partition appears as /dev/nvme0n1p1. The p separates the disk namespace from the partition number because the disk name already ends in a digit.
| Storage type or naming family | Whole-disk example | First-partition example | Naming note |
|---|---|---|---|
| Traditional PATA | /dev/hda | /dev/hda1 | Legacy IDE/PATA naming |
| SCSI-style naming, including SATA | /dev/sda | /dev/sda1 | May represent SATA, USB, SCSI, or virtual storage |
| NVMe | /dev/nvme0n1 | /dev/nvme0n1p1 | Uses a controller, namespace, and partition format |
Troubleshooting Common Naming Problems
A disk changed from /dev/sda to /dev/sdb
Linux assigns device letters according to discovery order, which can change after hardware is added or removed. Use a UUID, label, or a suitable link under /dev/disk/by-id in persistent configuration.
An /dev/sdX disk is assumed to be physical SCSI
The assumption is incorrect because SATA, USB, virtual disks, and other devices can use the Linux SCSI storage layer. Check lsblk transport and model columns before identifying the physical interface.
An NVMe partition is entered as /dev/sda1
NVMe uses a different naming format. Confirm the detected name with lsblk; the partition may be /dev/nvme0n1p1.
The wrong disk is selected for partitioning
Similar names and removable or virtual drives make guessing unsafe. Verify capacity, model, transport, existing partitions, and persistent identifiers before making any destructive change.
Swap does not activate after a device-letter change
If configuration refers to a volatile path such as /dev/sda2, the path may no longer identify the swap partition. Find its UUID with blkid and use a UUID-based entry in /etc/fstab.
Key Points to Remember
- PATA is the older parallel ATA interface associated with IDE drives, shared ribbon cables, and names such as
/dev/hda. - SATA is a serial ATA interface that commonly connects one drive per data cable and often appears as
/dev/sda. - SCSI is a storage interface family historically common in servers and workstations; Linux uses SCSI-style names for more than physical SCSI hardware.
- A trailing number normally identifies a partition, so
/dev/sda1is a partition on/dev/sda. - Interface, disk device, partition table, partition, filesystem, swap, and mount point are different storage layers.
- Device letters can change. Use UUID, LABEL, or
/dev/disk/by-idfor persistent configuration. - NVMe uses names such as
/dev/nvme0n1and/dev/nvme0n1p1, not the traditional/dev/sdXpattern.
For related background, see File Structure in Linux, GPT Partitions, and Show the Full Path of Shell Commands.