Performance

在 USB 3.0 外殼中的 SATA3.0 硬碟上不支持 ncq

  • September 6, 2014

支持 NCQ 的 SATA3.0 硬碟在從 USB 3.0 機箱安裝時沒有配置 NCQ 隊列深度是否有眾所周知的原因?

hdparm -iI /dev/sda 的輸出顯示支持 NCQ 的輸出

貓 /sys/block/sda/device/queue_depth

31

cat /sys/block/sdb/device/queue_depth

1

我無法將 queue_depth 更改為 1,因為它被拒絕

真正的答案顯然是硬碟外殼不兼容 UASP。因此,我在非 UASP 外殼中有一個支持 NCQ 的 HDD,它在這個設置中阻止了 USB3 的全部力量。

是的,這記錄在 Wikipedia 上

一些高級磁碟驅動器命令,例如本地命令隊列(可能會提高性能)、安全擦除(允許安全擦除驅動器上的所有數據)和 SMART(訪問驅動器可靠性指標)作為對低級​​的擴展存在硬碟驅動器命令集,例如 SCSI、SATA 或 PATA。當硬碟驅動器位於支持 USB 大容量儲存介面的磁碟盒中時,這些功能可能不起作用。一些 USB 大容量儲存介面是通用的,提供基本的讀寫命令。儘管這適用於基於硬碟的設備的基本數據傳輸,但沒有簡單的方法可以將高級的、特定於設備的命令發送到 USB 大容量儲存設備(儘管設備可以通過 USB 標準控制項創建自己的通信協議界面)。USB 3 中引入的 USB 附加 SCSI (UAS) 協議。

特定的 USB 2.0 晶片組具有實現 SCSI 直通的專有方法,可用於使用 smartctl 等工具從驅動器讀取 SMART 數據(使用 -d 選項後跟“晶片組”)。

$$ 6 $$最新的 USB 儲存晶片組支持 SCSI/ATA 轉換 (SAT) 作為與 ATA(和 SATA)設備互動的通用協議。$$ 7 $$

很明顯,原來的 UMS 不支持命令隊列(即使你有 SAT);你需要無人機。

dmesg最簡單的建議可能只是在插入驅動器後查看核心日誌( )。看看它是否說uas,而不是原來的usb-storage驅動程序。

$$ 1 $$ 看看uas驅動程序,它有許多需要工作的條件,否則它將失敗(可能是默默地)並usb-storage接管。顯然USB控制器需要分散收集支持,一些UAS設備也可以被忽略為不支持……

我認為您可以使用lsusb -v. 查找您的設備 - 搜尋Mass Storage- 並查找bInterfaceProtocol值。 80 Bulk-Only是原始 UMS 的值。 62是 UAS 的新值。(這些是十六進制值)。所以如果它可以做UAS,你應該看到兩者。


$$ 1 $$如果您ums-載入了特定驅動程序之一,那也很有趣。Linux 核心建構選項中有特定 USB 儲存驅動程序的簡要說明。 SAT(見上文)將屬於通用usb-storage. 我假設usb-storage支持SAT,因為它是微不足道的。

引用自:https://serverfault.com/questions/617036