ncq não suportado em um HDD SATA3.0 em uma embalagem usb 3.0

2

existe uma razão bem conhecida pela qual um NCQ de suporte SATA3.0 HDD não possui profundidade de fila NCQ configurada quando montado a partir de um gabinete usb 3.0?

saída para hdparm -iI / dev / sda mostra que o NCQ é suportado saída para

cat /sys/block/sda/device/queue_depth
31

cat /sys/block/sdb/device/queue_depth
1

Eu não posso mudar o queue_depth para 1 como é negado

    
por Saint Crusty 31.07.2014 / 21:56

2 respostas

1

A resposta real é aparentemente que o gabinete do HDD NÃO é compatível com o UASP. Como tal, eu tenho um HDD compatível com NCQ em um gabinete não-UASP que bloqueia a força total do USB3 nesta configuração.

    
por 07.09.2014 / 01:29
4

Sim, isso está documentado na Wikipedia .

Some advanced disk-drive commands, such as Native Command Queuing (which may increase performance), Secure Erase (which allows all data on the drive to be securely erased) and S.M.A.R.T. (accessing indicators of drive reliability) exist as extensions to low-level hard-drive command sets such as SCSI, SATA, or PATA. These features may not work when hard drives are in a disk enclosure supporting a USB mass-storage interface. Some USB mass-storage interfaces are generic, providing basic read-write commands. Although this works well for basic data transfer with hard-drive-based devices, there is no simple way to send advanced, device-specific commands to USB mass-storage devices (although devices may create their own communication protocols over a USB-standard control interface). The USB Attached SCSI (UAS) protocol introduced in USB 3.0 fixes several of these issues, including command queuing, command pipes for hardware requiring them and power management.

Specific USB 2.0 chipsets had proprietary methods of achieving SCSI pass-through, which could be used to read S.M.A.R.T. data from drives using tools such as smartctl (using the -d option followed by "chipset").[6] More recent USB storage chipsets support the SCSI / ATA Translation (SAT) as a generic protocol for interacting with ATA (and SATA) devices.[7]

Parece claro que o UMS original não pode suportar o enfileiramento de comandos (mesmo se você tiver SAT); você precisa de UAS.

A sugestão mais simples é provavelmente olhar o log do kernel ( dmesg ) depois de conectar a unidade. Veja se ele diz uas , ao contrário do driver original usb-storage . [1]

Olhando para o driver uas , ele tem várias condições para funcionar, caso contrário, ele falhará (talvez em silêncio) e usb-storage assumirá. Aparentemente, o controlador USB precisa de suporte a scater-gather, e também alguns dispositivos UAS podem ser ignorados como não suportados ...

Acho que você pode verificar a capacidade anunciada pelo dispositivo USB usando lsusb -v . Encontre seu (s) dispositivo (s) - procure Mass Storage - e procure os valores bInterfaceProtocol . 80 Bulk-Only é o valor para o UMS original. 62 é o novo valor para UAS. (Estes são valores hexadecimais). Então, se puder fazer o UAS, você verá os dois.

[1] Se você tiver um dos drivers ums- específicos carregados, também é interessante. Há breves descrições de drivers de armazenamento USB específicos nas opções de compilação do kernel do Linux .

SAT (veja acima), seria apenas sob o genérico usb-storage . Eu assumo usb-storage suporta SAT porque seria trivial.

    
por 01.08.2014 / 11:20