hdparm -t 测试的是绕过文件系统和页缓存的底层物理读取速度,反映磁盘真实顺序读性能;需用 lsblk 或 fdisk -l 确认设备名(如 /dev/sda),避免误测分区;加 --direct 参数可进一步规避内核缓冲区影响。

直接用 hdparm -t 测试的就是底层物理读取速度,它绕过文件系统和页缓存,从磁盘设备本身读取原始数据。
确认目标设备名
先用 lsblk 或 fdisk -l 查清你要测的磁盘设备路径,比如 /dev/sda(整块盘)或 /dev/nvme0n1(NVMe盘)。注意别选错分区(如 /dev/sda1),测试整盘更反映真实硬件能力。
执行底层读速测试
运行以下命令:
hdparm -t /dev/sda
输出类似:
Timing buffered disk reads: 642 MB in 3.00 seconds = 214.00 MB/sec
这一行就是关键结果——“buffered disk reads”代表不依赖内存缓存、直接从磁盘介质读取的速率,单位是 MB/s。数值越接近硬盘标称顺序读取性能,说明底层通道和控制器工作正常。
排除缓存干扰(可选但推荐)
若想进一步规避内核缓冲区影响,加 --direct 参数:
hdparm -t --direct /dev/sda
这会使用 O_DIRECT 模式,数据直通驱动层,更贴近应用层真实 I/O 行为。部分 NVMe 或虚拟化环境可能提示 “Inappropriate ioctl”,属正常,此时以不加 --direct 的 -t 结果为准。
注意几个常见误区
- -T 测的是内存缓存读速(快得不真实),不是底层速度,别混淆
- 测试前建议清空页面缓存:echo 3 > /proc/sys/vm/drop_caches(需 root)
- 单次结果有波动,可重复 3 次取平均值
- SSD 和 NVMe 盘通常远高于传统 HDD,7200 转机械盘一般在 80–160 MB/s 区间


















