転送速度が遅いという問題がまた発生しました。新しく購入した SanDisk USB 3.0 ドライブがあります。ラップトップには USB 2.0 しかありませんが、転送速度は一貫して約 2MB/秒です。
.img
をドライブに転送しています:
dd if=my.img of=/dev/sdb status=progress
上記は両方ともiostat
一貫して 2MB/秒を示しています。
接続時の kern.log には次の内容が出力されます:
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
lsusb -t
出力の関連部分:
/: 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
Dell 6320 で Ubuntu 16.04 LTS サーバーを実行しています。
ドライバーを追加するには:
# 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
答え1
のブロック サイズを増やすだけで済みますdd
。デフォルトは 1 バイトですが、一度に大きなデータ チャンクを転送することで、プロセスを大幅に高速化できます。関係するパラメータは と呼ばれますbs
。
最適な値で少し実験してみるのもいいでしょうが、4kB (4096 バイト) くらいで問題ないでしょう。32kB、64kB、さらには 128kB といったもっと大きなブロック サイズを推奨する情報源もあります。どの値が最適かは、ターゲット ドライブの物理構造に大きく依存し、ほとんど実験でしか見つけることができません。ただし、4kB を下限値として考えることができます。ブロック サイズが小さいほど、通常は速度が遅くなります。
最適なブロックサイズの詳細についてはdd
、UnixとLinuxに関するこの関連質問。
dd if=my.img of=/dev/sdb bs=4096 status=progress