Transferencia USB lenta cuando se agrega directamente al dispositivo

Transferencia USB lenta cuando se agrega directamente al dispositivo

Otro problema más de transferencia lenta. Tengo una unidad SanDisk USB 3.0 recién comprada. La computadora portátil solo tiene USB 2.0, pero obtengo velocidades de transferencia de ~2 MB/s de manera constante.

Estoy transfiriendo .imga la unidad:

dd if=my.img of=/dev/sdb status=progress

Tanto los anteriores como iostatmuestran 2 MB/s consistentes.

kern.log cuando se conecta da:

usb 2-1.2: new high-speed USB device number 6 using ehci-pci
usb 2-1.2: New USB device found, idVendor-0781, idProduct=5583
usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-1.2: Product: Ultra Fit
usb 2-1.2: Manufacturer: SanDisk
usb 2-1.2: SerialNumber: 4C53....
usb-storage 2-1.2:1.0: USB Mass Storage device detected
scsi host7: usb-storage 2-1.2:1.0
scsi 7:0:0:0 Direct-Access SanDisk Ultra Fit 1.00 PQ: 0 ANSI: 6
sd 7:0:0:0 Attached scsi generic sg2 type 0
sd 7:0:0:0 [sdb] 30031250 512-byte logical blocks: (15.4 GB/14.3GiB)
sd 7:0:0:0 [sdb] Write Protect is off
sd 7:0:0:0 [sdb] Mode Sense: 43 00 00 00
sd 7:0:0:0 [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sd 7:0:0:0 [sdb] Attached SCSI removable disk

Parte relevante de lsusb -tla producción:

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver-ehci-pci/3p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 2: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M

Ejecutando el servidor Ubuntu 16.04 LTS en Dell 6320.

Para agregar controladores:

# lsmod | grep pci
pci_stub       16384 1
vboxpci        24576 0
vboxdrv       454656 3 vboxnetadp,vboxnetflt,vboxpci
sdhci_pci      28672 0
sdhci          45056 1 sdhci_pci

# lsmod | grep hci
ahci           36864 4
sdhci_pci      28672 0
hibachi        32768 1
sdhci          45056 1 sdhci_pci

Respuesta1

Simplemente debes aumentar el tamaño del bloque de dd. El valor predeterminado es 1 byte, pero puedes acelerar drásticamente el proceso transfiriendo fragmentos de datos más grandes a la vez. El parámetro responsable se llama bs.

Quizás quieras experimentar un poco con los valores óptimos, pero algo alrededor de 4kB (4096 bytes) debería estar bien. Algunas fuentes también recomiendan tamaños de bloque más grandes, por ejemplo, 32 kB, 64 kB o incluso 128 kB. Depende en gran medida de la estructura física del disco de destino cuál es el valor óptimo y casi sólo puede descubrirse mediante experimentos. Puedes pensar en 4kB como límite inferior, aunque los tamaños de bloque más pequeños suelen ser mucho más lentos.

ddPuede encontrar más información sobre los tamaños de bloque óptimos enesta pregunta relacionada sobre Unix y Linux.

dd if=my.img of=/dev/sdb bs=4096 status=progress

información relacionada