![Linux 上 USB3 外部存储的连接问题(UAS 驱动程序问题)](https://linux22.com/image/76354/Linux%20%E4%B8%8A%20USB3%20%E5%A4%96%E9%83%A8%E5%AD%98%E5%82%A8%E7%9A%84%E8%BF%9E%E6%8E%A5%E9%97%AE%E9%A2%98%EF%BC%88UAS%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E9%97%AE%E9%A2%98%EF%BC%89.png)
在 Ubuntu 15.10 上,当我想使用 NTFS 文件系统格式化通过 USB3 连接的外部 4TO 磁盘(在 StarTech USB/eSATA 硬盘坞上)时,我有很多I/O 错误,并且格式化失败。
我尝试了 GParted v 0.19 和最新 live CD 上的 GParted gparted-live-0.23.0-1-i586.iso
,也遇到了同样的问题。
之后,在 Ubuntu 15.10 上使用 GParted 和相同的 USB3 连接,我尝试格式化为ext4
,没有出现问题。真的很奇怪。
因为我不知道mkfs.ext4
GParted 用于格式化磁盘的工具是否对磁盘进行了类似(或不类似)的测试mkntfs
,所以我首先假设问题与新磁盘有关。也许这个新磁盘引起了问题。所以我尝试e2fsck -c
在这个硬盘上运行。在 Ubuntu 15.10 上,e2fsck -c
冻结在 0.45%,我不知道为什么。
因此,在同一台 PC 上使用另一个版本的 Ubuntu (15.04),我尝试使用 StarTech HDD 坞站的 eSATA 连接来连接同一个 4TO 磁盘。这次,e2fsck -c
运行正确。
几个小时后,您可以看到结果:
sudo e2fsck -c /dev/sdc1
e2fsck 1.42.12 (29-Aug-2014)
ColdCase : récupération du journal
Vérification des blocs défectueux (test en mode lecture seule) : complété
ColdCase: Updating bad block inode.
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
ColdCase: ***** LE SYSTÈME DE FICHIERS A ÉTÉ MODIFIÉ *****
ColdCase : 11/244195328 fichiers (0.0% non contigus), 15377150/976754176 blocs
我不是输出方面的专家badblock
,但看起来这个磁盘上根本没有坏块?
那么,如果问题不是硬盘驱动器,也许问题可能与mkntfs
通过 USB3 使用有关?我还可以尝试哪些其他测试?
有关 USB 坞站的一些信息:
➜ ~ lsusb
...
Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
...
➜ ~ sudo lsusb -v -d 174c:55aa
Mot de passe [sudo] pour reyman :
Bus 002 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 3.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 9
idVendor 0x174c ASMedia Technology Inc.
idProduct 0x55aa ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge
bcdDevice 1.00
iManufacturer 2 asmedia
iProduct 3 ASM1053E
iSerial 1 123456789012
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 121
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 36mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 80 Bulk-Only
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 1
bNumEndpoints 4
bInterfaceClass 8 Mass Storage
bInterfaceSubClass 6 SCSI
bInterfaceProtocol 98
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 16
Data-in pipe (0x03)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 16
Data-out pipe (0x04)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 15
MaxStreams 16
Status pipe (0x02)
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x04 EP 4 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0400 1x 1024 bytes
bInterval 0
bMaxBurst 0
Command pipe (0x01)
Binary Object Store Descriptor:
bLength 5
bDescriptorType 15
wTotalLength 22
bNumDeviceCaps 2
USB 2.0 Extension Device Capability:
bLength 7
bDescriptorType 16
bDevCapabilityType 2
bmAttributes 0x00000002
Link Power Management (LPM) Supported
SuperSpeed USB Device Capability:
bLength 10
bDescriptorType 16
bDevCapabilityType 3
bmAttributes 0x00
wSpeedsSupported 0x000e
Device can operate at Full Speed (12Mbps)
Device can operate at High Speed (480Mbps)
Device can operate at SuperSpeed (5Gbps)
bFunctionalitySupport 1
Lowest fully-functional device speed is Full Speed (12Mbps)
bU1DevExitLat 10 micro seconds
bU2DevExitLat 2047 micro seconds
Device Status: 0x0001
Self Powered
有关有问题的磁盘的信息:/dev/sdd
➜ ~ sudo fdisk -l /dev/sdd
Disque /dev/sdd : 3,7 TiB, 4000787030016 octets, 7814037168 secteurs
Unités : sectors of 1 * 512 = 512 octets
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: ACD5760B-2898-435E-82C6-CB3119758C9B
Périphérique Start Fin Secteurs Size Type
/dev/sdd1 2048 7814035455 7814033408 3,7T Linux filesystem
dmesg
返回大量有关磁盘的错误;请参阅此摘录:
[ 68.856381] scsi host6: uas_eh_bus_reset_handler start
[ 68.968376] usb 2-2: reset SuperSpeed USB device number 2 using xhci_hcd
[ 68.989825] scsi host6: uas_eh_bus_reset_handler success
[ 99.881608] sd 6:0:0:0: [sdd] tag#12 uas_eh_abort_handler 0 uas-tag 13 inflight: CMD OUT
[ 99.881618] sd 6:0:0:0: [sdd] tag#12 CDB: Write(16) 8a 00 00 00 00 00 e8 c4 08 00 00 00 00 08 00 00
[ 99.881856] sd 6:0:0:0: [sdd] tag#5 uas_eh_abort_handler 0 uas-tag 6 inflight: CMD OUT
[ 99.881861] sd 6:0:0:0: [sdd] tag#5 CDB: Write(16) 8a 00 00 00 00 00 cd 01 08 f0 00 00 00 10 00 00
[ 99.881967] sd 6:0:0:0: [sdd] tag#4 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD OUT
[ 99.881972] sd 6:0:0:0: [sdd] tag#4 CDB: Write(16) 8a 00 00 00 00 00 cd 01 08 00 00 00 00 f0 00 00
[ 99.882085] sd 6:0:0:0: [sdd] tag#3 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD OUT
[ 99.882090] sd 6:0:0:0: [sdd] tag#3 CDB: Write(16) 8a 00 00 00 00 00 cd 01 07 10 00 00 00 f0 00 00
[ 99.882171] sd 6:0:0:0: [sdd] tag#2 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD OUT
[ 99.882175] sd 6:0:0:0: [sdd] tag#2 CDB: Write(16) 8a 00 00 00 00 00 cd 01 06 20 00 00 00 f0 00 00
[ 99.882255] sd 6:0:0:0: [sdd] tag#1 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD OUT
[ 99.882258] sd 6:0:0:0: [sdd] tag#1 CDB: Write(16) 8a 00 00 00 00 00 cd 01 05 30 00 00 00 f0 00 00
[ 99.882338] sd 6:0:0:0: [sdd] tag#0 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD OUT
[ 99.882342] sd 6:0:0:0: [sdd] tag#0 CDB: Write(16) 8a 00 00 00 00 00 cd 01 04 40 00 00 00 f0 00 00
[ 99.882419] sd 6:0:0:0: [sdd] tag#11 uas_eh_abort_handler 0 uas-tag 12 inflight: CMD OUT
[ 99.882423] sd 6:0:0:0: [sdd] tag#11 CDB: Write(16) 8a 00 00 00 00 00 cd 00 f9 00 00 00 00 f0 00 00
[ 99.882480] sd 6:0:0:0: [sdd] tag#10 uas_eh_abort_handler 0 uas-tag 11 inflight: CMD OUT
[ 99.882483] sd 6:0:0:0: [sdd] tag#10 CDB: Write(16) 8a 00 00 00 00 00 cd 00 f9 f0 00 00 00 f0 00 00
[ 99.882530] sd 6:0:0:0: [sdd] tag#9 uas_eh_abort_handler 0 uas-tag 10 inflight: CMD OUT
[ 99.882532] sd 6:0:0:0: [sdd] tag#9 CDB: Write(16) 8a 00 00 00 00 00 cd 00 fa e0 00 00 00 f0 00 00
[ 99.882593] sd 6:0:0:0: [sdd] tag#8 uas_eh_abort_handler 0 uas-tag 9 inflight: CMD
[ 99.882596] sd 6:0:0:0: [sdd] tag#8 CDB: Write(16) 8a 00 00 00 00 00 cd 00 fb d0 00 00 00 f0 00 00
[ 99.882667] scsi host6: uas_eh_bus_reset_handler start
[ 99.994700] usb 2-2: reset SuperSpeed USB device number 2 using xhci_hcd
[ 100.015613] scsi host6: uas_eh_bus_reset_handler success
[ 135.962175] sd 6:0:0:0: [sdd] tag#5 uas_eh_abort_handler 0 uas-tag 6 inflight: CMD OUT
[ 135.962185] sd 6:0:0:0: [sdd] tag#5 CDB: Write(16) 8a 00 00 00 00 00 cd 40 78 f0 00 00 00 10 00 00
[ 135.962428] sd 6:0:0:0: [sdd] tag#4 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD OUT
[ 135.962436] sd 6:0:0:0: [sdd] tag#4 CDB: Write(16) 8a 00 00 00 00 00 cd 40 78 00 00 00 00 f0 00 00
[ 135.962567] sd 6:0:0:0: [sdd] tag#3 uas_eh_abort_handler 0 uas-tag 4 inflight: CMD OUT
[ 135.962576] sd 6:0:0:0: [sdd] tag#3 CDB: Write(16) 8a 00 00 00 00 00 cd 40 77 10 00 00 00 f0 00 00
[ 135.962682] sd 6:0:0:0: [sdd] tag#2 uas_eh_abort_handler 0 uas-tag 3 inflight: CMD OUT
[ 135.962690] sd 6:0:0:0: [sdd] tag#2 CDB: Write(16) 8a 00 00 00 00 00 cd 40 76 20 00 00 00 f0 00 00
[ 135.962822] sd 6:0:0:0: [sdd] tag#1 uas_eh_abort_handler 0 uas-tag 2 inflight: CMD
[ 135.962830] sd 6:0:0:0: [sdd] tag#1 CDB: Write(16) 8a 00 00 00 00 00 cd 40 75 30 00 00 00 f0 00 00
[ 160.904916] sd 6:0:0:0: [sdd] tag#0 uas_eh_abort_handler 0 uas-tag 1 inflight: CMD OUT
[ 160.904926] sd 6:0:0:0: [sdd] tag#0 CDB: Write(16) 8a 00 00 00 00 00 00 00 29 08 00 00 00 08 00 00
[ 160.905068] scsi host6: uas_eh_bus_reset_handler start
我找到了这个信息论坛帖子,UAS 和新的 Linux 内核存在一些问题吗?它似乎问题是已知的在许多地方在互联网上,USB3 + Linux 在很多情况下似乎都有问题——但对于旧内核来说。有什么想法可以在更新的内核上解决这个问题吗?
我的内核是:
➜ ~ uname -r
4.2.0-16-generic
嗯,对于不同的 USB3 芯片,UAS 似乎已损坏ASMedia Technology Inc.
;你可以看到更多信息这里。
我想这是我的问题,但现在我该如何解决它,StarTech 坞站中的 USB3 实现使用哪个芯片?
答案1
我在 Mint 18 上遇到了同样的问题,但我找到的解决方案可能适用于 *Ubuntu 15/16 以及类似的 Linux 发行版。然而,对我来说,在 dmesg 中看到 UAS 错误后不久,我就遇到了不可恢复的系统锁定。
我的外壳有一个 ASMedia ASM1053 芯片,它似乎与我的内核 (4.4.0-72-generic) 的 UAS 模块有问题。
经过一番搜索,我结合了找到的两个解决方案:YtvwlD提到的这个和这个。
首先,您必须使用以下命令获取设备的硬件 IDLSSB命令。完成此操作后,找到您的外部/外壳/桥接器。它可能会显示如下:
Bus 002 Device 002: ID 174c:5136 ASMedia Technology Inc. ASM1053 SATA 6Gb/s bridge
就我而言,ID 是174c:5136。
之后,您必须在中创建一个文件/etc/modprobe.d/因此,正确的设备已被列入使用 UAS 的黑名单(这会导致问题),请使用更新 initramfs 映像更新 initramfs,然后重新启动以使更改生效。
$ echo options usb-storage quirks=174c:5136:u | sudo tee /etc/modprobe.d/blacklist_uas.conf
$ sudo update-initramfs -u
$ sudo reboot
当然,请将“174c:5136”替换为您的网桥/机箱/外部设备的硬件 ID。如果操作正确,您应该会看到类似这样的消息消息重新启动后连接设备时:
[ 93.985002] usb 4-1: UAS is blacklisted for this device, using usb-storage instead
从那以后我的外壳就再没有出现过任何问题。
答案2
我今天在 4.8.0 内核上遇到了这个问题。
根据这个论坛帖子它可以通过以下方式规避
$ echo options usb-storage quirks=357d:7788:u | sudo tee /etc/modprobe.d/blacklist_uas_357d.conf
$ sudo update-initramfs -u
并重新启动。
答案3
为了即时应用其他答案提到的怪癖,您还可以在运行时设置它:
echo "152d:0583:u" | sudo tee /sys/module/usb_storage/parameters/quirks
152d:0583
当然,请替换为您设备的 USB 设备 ID。
这会将模块quirks
的参数设置usb-storage
为上述值,而无需重新启动。