Usb-Drive

USB 硬碟 I/O 速度慢

  • March 13, 2019

我有幾個帶有 4 個驅動器的 Mediasonic ProBox HF2-SU3S2 - 都有相同的症狀 - 極慢的 I/O(充其量約為 10MB/s 寫入)。每個單元都配置有軟體 RAID 5,使用 mdadm 和 4 個驅動器。

它確實似乎連接到了 USB 2.1 埠,我預計它會比 USB 3.0 慢,但 10MB/s 對我來說似乎慢得令人懷疑和荒謬。

我可以為每個驅動器發布 smartctl -a 輸出 - 但沒有任何驅動器出現故障,並且沒有錯誤被記錄到與驅動器相關的系統日誌中。

這是第一個單元中的驅動器:

Device Model:     ST2000DL003-9VT166
Device Model:     ST2000DM001-1ER164
Device Model:     ST2000DM001-1CH164
Device Model:     ST2000DM001-1CH164

第二單元中的驅動器:

Device Model:     ST2000DL003-9VT166
Device Model:     ST2000DL003-9VT166
Device Model:     WDC WD20EADS-00R6B0
Device Model:     ST2000DL003-9VT166

核心版本:

3.16.0-6-amd64 #1 SMP Debian 3.16.57-2

掛載輸出:

/dev/md2 on /mnt/nas type ext4 (rw,relatime,stripe=256,data=ordered)
/dev/md3 on /mnt/nas2 type ext4 (rw,relatime,stripe=384,data=ordered)

/proc/mdstat 的輸出

md3 : active raid5 sdg[5] sdj[4] sdi[6] sdh[1]
     5860150272 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
     bitmap: 0/15 pages [0KB], 65536KB chunk

md2 : active raid5 sdc1[0] sdf1[4] sdd1[6] sde1[5]
     5860141056 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]

使用 dd 進行測試:

root@talon:/mnt/nas2# dd if=/dev/zero of=/mnt/nas2/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 71.1888 s, 15.1 MB/s

root@talon:/mnt/nas# dd if=/dev/zero of=/mnt/nas/testfile bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 80.8867 s, 13.3 MB/s

mdadm –detail 的輸出

/dev/md2:
       Version : 1.2
 Creation Time : Wed May  1 22:26:29 2013
    Raid Level : raid5
    Array Size : 5860141056 (5588.67 GiB 6000.78 GB)
 Used Dev Size : 1953380352 (1862.89 GiB 2000.26 GB)
  Raid Devices : 4
 Total Devices : 4
   Persistence : Superblock is persistent

   Update Time : Wed Dec  5 21:29:12 2018
         State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
 Spare Devices : 0

        Layout : left-symmetric
    Chunk Size : 512K

          Name : dev-vm01:0
          UUID : dc4e42f6:3c3eb2f7:d6137927:51e328ef
        Events : 21688

   Number   Major   Minor   RaidDevice State
      0       8       33        0      active sync   /dev/sdc1
      5       8       65        1      active sync   /dev/sde1
      6       8       49        2      active sync   /dev/sdd1
      4       8       81        3      active sync   /dev/sdf1

=-===-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

/dev/md3:
       Version : 1.2
 Creation Time : Sat Mar 10 11:08:14 2018
    Raid Level : raid5
    Array Size : 5860150272 (5588.67 GiB 6000.79 GB)
 Used Dev Size : 1953383424 (1862.89 GiB 2000.26 GB)
  Raid Devices : 4
 Total Devices : 4
   Persistence : Superblock is persistent

 Intent Bitmap : Internal

   Update Time : Wed Dec  5 21:23:31 2018
         State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
 Spare Devices : 0

        Layout : left-symmetric
    Chunk Size : 512K

          Name : dragon:0
          UUID : 70d8f410:462c6714:50231e20:b08aca81
        Events : 151906

   Number   Major   Minor   RaidDevice State
      5       8       96        0      active sync   /dev/sdg
      1       8      112        1      active sync   /dev/sdh
      6       8      128        2      active sync   /dev/sdi
      4       8      144        3      active sync   /dev/sdj

更詳細的資訊

root@talon:/mnt/nas# lsusb
Bus 009 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp.
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp.
Bus 001 Device 002: ID 2109:3431
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@talon:/mnt/nas# lsusb -v -s 3:2

Bus 003 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp.
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.10
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0        64
 idVendor           0x152d JMicron Technology Corp. / JMicron USA Technology Corp.
 idProduct          0x0567
 bcdDevice            2.05
 iManufacturer          10 JMicron
 iProduct               11 USB to ATA/ATAPI Bridge
 iSerial                 5 152D00539000
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           32
   bNumInterfaces          1
   bConfigurationValue     1
   iConfiguration          4 USB Mass Storage
   bmAttributes         0xc0
     Self Powered
   MaxPower               50mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass         8 Mass Storage
     bInterfaceSubClass      6 SCSI
     bInterfaceProtocol     80 Bulk-Only
     iInterface              6 MSC Bulk-Only Transport
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
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


=-=-=-=-=-=-=-=-=-==-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

root@talon:/mnt/nas# lsusb -v -s 1:3

Bus 001 Device 003: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp.
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               2.10
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0        64
 idVendor           0x152d JMicron Technology Corp. / JMicron USA Technology Corp.
 idProduct          0x0567
 bcdDevice            2.05
 iManufacturer          10 JMicron
 iProduct               11 USB to ATA/ATAPI Bridge
 iSerial                 5 152D00539000
 bNumConfigurations      1
 Configuration Descriptor:
   bLength                 9
   bDescriptorType         2
   wTotalLength           32
   bNumInterfaces          1
   bConfigurationValue     1
   iConfiguration          4 USB Mass Storage
   bmAttributes         0xc0
     Self Powered
   MaxPower               50mA
   Interface Descriptor:
     bLength                 9
     bDescriptorType         4
     bInterfaceNumber        0
     bAlternateSetting       0
     bNumEndpoints           2
     bInterfaceClass         8 Mass Storage
     bInterfaceSubClass      6 SCSI
     bInterfaceProtocol     80 Bulk-Only
     iInterface              6 MSC Bulk-Only Transport
     Endpoint Descriptor:
       bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x81  EP 1 IN
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
     Endpoint Descriptor:
      bLength                 7
       bDescriptorType         5
       bEndpointAddress     0x02  EP 2 OUT
       bmAttributes            2
         Transfer Type            Bulk
         Synch Type               None
         Usage Type               Data
       wMaxPacketSize     0x0200  1x 512 bytes
       bInterval               0
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

“它確實似乎連接到了 USB 2.1 埠”。你是怎麼確認的?

查看 lsusb 的輸出。

bcdUSB               2.10

使用的是什麼主機板或 PC 型號,使用的是哪個 USB 埠?

主機板:GA-78LMT-USB3 我必須驗證版本和確切的埠。

您是否嘗試過該 PC 上的其他埠,如果是,您是否得到相同的結果?

是 - 2 個單元插入到同一桌面的不同 USB 埠。我什至從 Raspberry Pi 獲得了這些速度。

USB 2.0 比 USB 3.0 慢得多。通過 USB 2.0 直接連接的硬碟幾乎不會超過 20 MB/秒,而在 USB 3.0 上,即使是 2.5 英寸的小磁碟也能達到 100 MB/秒。

磁碟的大小無關緊要。而且我不買那個 - 有很多資源表明速度會很慢,但會超過 10MB/s。

我將其中一個單元插入一個已知的 USB 3.0 埠:

Bus 002 Device 002: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp.
Device Descriptor:
 bLength                18
 bDescriptorType         1
 bcdUSB               3.00
 bDeviceClass            0 (Defined at Interface level)
 bDeviceSubClass         0
 bDeviceProtocol         0
 bMaxPacketSize0         9
 idVendor           0x152d JMicron Technology Corp. / JMicron USA Technology Corp.
 idProduct          0x0567
 bcdDevice            2.05
 iManufacturer          10 JMicron
 iProduct               11 USB to ATA/ATAPI Bridge
 iSerial                 5 152D00539000

現在,我的傳輸速度提高了 3 倍,但遠未達到應有的水平:

root@talon:/mnt/nas2# dd if=/dev/zero of=/mnt/nas2/testfile4 bs=1G count=1 oflag=direct
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 32.2737 s, 33.3 MB/s

fdisk 的輸出:

Disk /dev/sdc: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe3b023b3

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdc1          63 3907024064 3907024002  1.8T 83 Linux


Disk /dev/sdd: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x580e98e6

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdd1        2048 3907029167 3907027120  1.8T 83 Linux


Disk /dev/sde: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000d19a7

Device     Boot Start        End    Sectors  Size Id Type
/dev/sde1        2048 3907028991 3907026944  1.8T 83 Linux


Disk /dev/sdf: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc16a55ab

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdf1        2048 3907029167 3907027120  1.8T 83 Linux

Disk /dev/sdg: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc91d9f27

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdg1        2048 3907028991 3907026944  1.8T fd Linux raid autodetect


Disk /dev/sdj: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x65cd7624

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdj1        2048 3907028991 3907026944  1.8T fd Linux raid autodetect


Disk /dev/sdi: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x03221dd4

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdi1        2048 3907028991 3907026944  1.8T fd Linux raid autodetect


Disk /dev/sdh: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xc91329ab

Device     Boot Start        End    Sectors  Size Id Type
/dev/sdh1        2048 3907028991 3907026944  1.8T fd Linux raid autodetect

編輯:我做了一些故障排除,發現這是 USB 控制器的問題。不確定這是否是與 Linux 和主機板上的 USB 控制器的兼容性問題 - 但我嘗試使用更高版本的核心,Linux 甚至拒絕在 USB 3.0 埠上初始化設備。但是,在帶有 USB 3.0 連接的筆記型電腦上試用 probox 效果很好。

事實證明,內置的 USB 控制器不值得印在上面的矽膠。我安裝了一個 PCI-e USB 3.1 控制器,現在我得到了 61MB/s 而不是 10MB/s。在數據傳輸速度方面仍然不是“快” - 但 60MB/s 是一個巨大的差異。

USB2 速度 (60MB/s) 除以您同時寫入的 RAID 中的驅動器數量 (4) 等於 15 MB/s,加上一些成本,10 聽起來很合理。

測試解除安裝 RAID 以確保它沒有使用匯流排然後執行

hdparm -Tt /dev/sdh

引用自:https://unix.stackexchange.com/questions/486491