Interfaces and Protocols in storage devices

Interfaces and Protocols in storage devices

Photo by Anete Lusina on Pexels.com

Storage devices don’t just need capacity and speed — they need a way to talk to the rest of the system. That’s the job of storage interfaces and protocols: the physical connections and command sets that let a CPU, controller, or network fetch and write data to a drive. This article works through the major storage interfaces and protocols, from local direct-attach connections to network-based storage protocols.

Local Storage Interfaces

SATA (Serial ATA)

The long-standing standard for consumer HDDs and SSDs, using the AHCI (Advanced Host Controller Interface) command protocol.

VersionMax Speed
SATA I1.5 Gbps (~150 MB/s)
SATA II3 Gbps (~300 MB/s)
SATA III6 Gbps (~600 MB/s)

SAS (Serial Attached SCSI)

Used predominantly in enterprise servers and storage arrays. SAS drives are typically more reliable, support dual-porting (for redundant controller paths), and use the mature SCSI command set.

FeatureSATASAS
Command setATASCSI
Dual-port supportNoYes
Max speed (12G SAS)6 Gbps12 Gbps
Typical useConsumer, entry serversEnterprise servers, storage arrays
CablingPoint-to-pointSupports expanders for many drives per controller

SAS and SATA drives can often physically connect to the same SAS backplane, but SATA controllers cannot accept SAS drives — SAS is backward-compatible with SATA, not the reverse.

NVMe (Non-Volatile Memory Express)

Covered in depth in the companion solid-state storage article — NVMe runs the storage protocol directly over PCIe, purpose-built for flash’s low-latency, high-parallelism characteristics, replacing the older AHCI approach designed around spinning disks.

SCSI (Historical Foundation)

The original SCSI (Small Computer System Interface) parallel bus predates SAS, and its command set lives on conceptually inside SAS, Fibre Channel, and iSCSI today — all three transport the same underlying SCSI command architecture over different physical/network layers.

Network Storage Protocols

iSCSI (Internet SCSI)

Encapsulates SCSI commands inside TCP/IP, letting servers access block storage over an ordinary Ethernet network rather than requiring dedicated Fibre Channel hardware.

graph LR
    Host[Server: iSCSI Initiator] -->|TCP/IP over Ethernet| Target[Storage Array: iSCSI Target]
# Linux iSCSI initiator setup
sudo apt install open-iscsi
sudo iscsiadm -m discovery -t sendtargets -p 10.0.0.50:3260
sudo iscsiadm -m node --login
lsblk
FeatureDetail
TransportTCP/IP over standard Ethernet
Hardware neededStandard NICs (or dedicated iSCSI HBAs for offload)
Typical speed1/10/25/100 GbE
CostLower than FC — reuses existing Ethernet infrastructure

Fibre Channel (FC)

A dedicated, purpose-built storage network technology, covered in depth in the companion Fibre Channel troubleshooting article. Known for very low latency and lossless, deterministic delivery, at the cost of requiring dedicated switches, HBAs, and cabling.

FCoE (Fibre Channel over Ethernet)

Encapsulates native FC frames inside Ethernet frames, letting FC traffic run over a converged Ethernet network (requiring DCB — Data Center Bridging extensions for lossless delivery), rather than a fully separate FC fabric.

FeatureFibre ChanneliSCSIFCoE
TransportDedicated FC fabricStandard TCP/IPEthernet with DCB
LatencyLowestHigher (TCP/IP overhead)Low, close to native FC
HardwareFC HBAs, FC switchesStandard NICsCNAs (Converged Network Adapters), DCB switches
ComplexityHigh (separate skill set)Lower (reuses IP knowledge)Moderate
Typical adoption todayStill common in large enterprisesVery common, cost-effectiveDeclining in favor of native iSCSI/NVMe-oF

NFS (Network File System)

A file-level protocol (not block-level) allowing Linux/Unix systems to mount remote directories as if they were local.

sudo mount -t nfs 10.0.0.60:/export/data /mnt/data

SMB/CIFS (Server Message Block)

The Windows-native file-sharing protocol, also widely supported on Linux (via Samba) and macOS.

sudo mount -t cifs //10.0.0.60/share /mnt/share -o username=user,password=pass

NVMe-oF (NVMe over Fabrics)

Extends NVMe’s low-latency, high-queue-depth model across a network — using RDMA (RoCE, iWARP), Fibre Channel, or TCP as the transport — bringing near-local NVMe performance to networked storage.

graph LR
    Host[Server: NVMe-oF Initiator] -->|RDMA / FC / TCP| Target[NVMe-oF Storage Target]
NVMe-oF TransportDescription
NVMe/TCPRuns over standard TCP/IP networks, easiest to deploy
NVMe/RoCERDMA over Converged Ethernet, very low latency, needs DCB
NVMe/FCRuns NVMe commands over existing Fibre Channel fabrics

Protocol Comparison Summary

ProtocolAccess TypeTransportTypical LatencyCommon Use Case
SATA/SASBlock (local)Direct-attachVery lowLocal server/workstation storage
NVMeBlock (local)PCIeLowestHigh-performance local flash
iSCSIBlock (network)TCP/IPModerateCost-effective SAN over Ethernet
Fibre ChannelBlock (network)Dedicated FC fabricVery lowHigh-performance enterprise SAN
FCoEBlock (network)Converged EthernetLowConverged FC/Ethernet infrastructure
NFSFile (network)TCP/IPModerateLinux/Unix file sharing
SMB/CIFSFile (network)TCP/IPModerateWindows file sharing
NVMe-oFBlock (network)TCP/RDMA/FCVery lowHigh-performance networked flash

Practical Examples

Checking Local Storage Interface Type on Linux

lsblk -d -o NAME,TRAN,SIZE,MODEL

Example output:

NAME   TRAN   SIZE  MODEL
sda    sas    1.8T  HGST-SAS-Drive
nvme0n1 nvme  1.0T  Samsung SSD 980 PRO

Cisco: Verifying iSCSI/FCoE Configuration Context

Router# show interface fc1/1
Router# show fcoe database

Python: Enumerate Block Devices and Their Transport

import subprocess
import json

result = subprocess.run(
    ["lsblk", "-J", "-o", "NAME,TRAN,SIZE,MODEL"],
    capture_output=True, text=True
)
data = json.loads(result.stdout)
for device in data["blockdevices"]:
    print(f"{device['name']}: transport={device.get('tran')}, size={device['size']}")

Best Practices

Troubleshooting

SymptomLikely CauseFix
iSCSI target not discoveredFirewall blocking port 3260, wrong IPVerify iscsiadm discovery, check firewall rules
SAS drive not recognizedWrong controller (SATA-only), cabling issueVerify HBA/controller supports SAS
NVMe-oF high latencyWrong transport chosen for workloadConsider RoCE/FC instead of TCP for latency-sensitive needs
NFS mount slowNetwork congestion, server-side loadCheck network path and NFS server performance
FCoE traffic dropsDCB not properly configuredVerify DCB/PFC (Priority Flow Control) settings on switches

Further Reading

Conclusion

Every storage protocol represents a different tradeoff between performance, cost, and complexity — from local SATA/SAS/NVMe interfaces to network-based iSCSI, Fibre Channel, FCoE, and the newer NVMe-oF standards. Choosing the right one comes down to understanding your workload’s latency and throughput requirements against your budget and existing infrastructure skill set.

Exit mobile version