Linux 下 smartctl 查看带硬盘盒的硬盘信息

  • 1370 字
  • 次阅读

smartctl 读 SATA 盘的 SMART,靠的是 ATA pass-through(0x85/0xA1) 这条命令穿过 USB 桥接芯片转发给硬盘。但各家桥接芯片(JMicron / ASMedia / Realtek / Sunplus / Cypress…)对这条命令的封装方式互不兼容,甚至是私有的。

Windows 上 CrystalDiskInfo / HDDScan 这类工具内置了十几家桥接芯片的私有适配表(按 VID:PID 硬编码),所以常见硬盘盒都能读。
Linux 上 smartctl 同样有这张表(drivedb.h / 内部 USB 表),但表里没收录的 VID:PID 就直接报错,且不会自己“猜”

在 Linux 中

硬盘(ATA) ←→ 桥接芯片 ←→ USB ←→ SCSI 层 ←→ sd 驱动 ←→ /dev/sda

直接接上的硬盘,smartctl 看到的直接是 ATA 设备,自动识别,不用写 -d。

NVMe:看 /dev/nvme0 自动识别。

对于 USB硬盘盒,smartctl 看到的只是 SCSI 设备,它不知道桥接芯片底下是什么、用什么翻译方式,所以需要手动指定。不然会报报 Unknown USB bridge,我这次遇到的用的是-d sat

sat:SCSI to ATA Translation 的缩写,是一个 ANSI T10 标准。

写法 含义 适用场景
-d ata 原生 ATA 协议 直连 SATA 硬盘(/dev/sda)
-d scsi 只走 SCSI 层 硬盘盒默认行为,读不到 ATA SMART
-d sat 标准 SCSI→ATA 翻译(SAT) 支持透传的 USB 硬盘盒
-d sat,12 SAT,强制 12 字节 ATA PASS-THROUGH(0xA1) 桥接只认 12 字节命令时
-d sat,16 SAT,强制 16 字节 ATA PASS-THROUGH(0x85) 桥接只认 16 字节命令时
-d usbjmicron JMicron 私有桥接协议 JMicron JMS 系列硬盘盒
-d usbjmicron,x JMicron 私有协议 + 指定端口 双盘位 JMS 硬盘盒
-d usbcypress Cypress 私有桥接协议 Cypress AT2LP 等芯片
-d usbsunplus Sunplus 私有桥接协议 Sunplus 芯片硬盘盒
-d usbasm1352r ASMedia ASM1352R 协议 ASMedia ASM1352R 硬盘盒
-d jmb39x JMicron JMB39x RAID 模式 JMicron JMB39x 双盘盒
-d sntjmicron JMicron 另一组私有协议 部分 JMS 硬盘盒
-d nvme NVMe 协议 直连 NVMe SSD(/dev/nvme0)
-d sat,VID:PID 按 USB 厂商号:产品号直接指定 型号表未收录的桥接
打赏
打赏提示信息
分享
分享提示信息