Transferência USB lenta quando dd direto para o dispositivo

1

Ainda outro problema de transferência lenta. Eu comprei uma unidade SanDisk USB 3.0 recentemente comprada. Laptop só tem USB 2.0, mas estou recebendo velocidades de transferência de ~ 2MB / s de forma consistente.

Estou transferindo um .img para o drive:

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

Tanto o acima quanto o iostat mostram 2MB / s consistentes.

kern.log ao conectar dá:

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 -t output:

/:  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

Executando o Ubuntu 16.04 LTS Server no Dell 6320.

Para adicionar drivers:

# 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
    
por deitch 09.05.2016 / 13:11

1 resposta

4

Você deve simplesmente aumentar o tamanho do bloco de dd . O padrão é 1 byte único, mas você pode acelerar drasticamente o processo com a transferência de blocos de dados maiores de uma só vez. O parâmetro responsável é chamado bs .

Você pode querer experimentar um pouco com os valores ótimos, mas algo em torno de 4kB (4096 bytes) deve estar ok. Algumas fontes também recomendam tamanhos de blocos maiores de, e. 32kB, 64kB ou mesmo 128kB. Depende strongmente da estrutura física da unidade alvo, cujo valor é ótimo e quase só pode ser descoberto por experiência. Você pode pensar em 4kB como limite inferior, porém, tamanhos de bloco menores são geralmente muito mais lentos.

Mais informações sobre tamanhos ideais de bloco para dd podem ser encontradas em esta pergunta relacionada no Unix & Linux .

dd if=my.img of=/dev/sdb bs=4096 status=progress
    
por Byte Commander 09.05.2016 / 13:32