在 USB 3.0 外殼中的 SATA3.0 硬碟上不支持 ncq
支持 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 的全部力量。
一些高級磁碟驅動器命令,例如本地命令隊列(可能會提高性能)、安全擦除(允許安全擦除驅動器上的所有數據)和 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,因為它是微不足道的。