我不确定我是否是唯一有此问题的人,但是当我在升级到macOS Sierra后尝试闪存磁盘映像时,我的性能非常差。
当我使用以下命令闪存磁盘映像时,我的写入速度大约为300-500k:
$ unzip -p /path/to/image | pv | sudo dd bs=32m of=/dev/rdisk2
1.31GiB 0:55:37 [ 424KiB/s] [ <=> ]
^C
0+4279363 records out
2191033856 bytes transferred in 5218.495041 secs (419859 bytes/sec)
有趣的是,如果我在VM(Ubuntu 12.04)中使用完全相同的SD卡,磁盘映像和USB读取器完成同样的操作,我的性能会更快。
$ unzip -p /path/to/image | pv | sudo dd bs=32M of=/dev/sdc
3.73GB 0:02:30 [25.4MB/s] [ <=> ]
0+55333 records in
0+55333 records out
4004511744 bytes (4.0 GB) copied, 150.572 s, 26.6 MB/s
这曾经很好地工作El Capitan。
我也试过使用内置的SD卡读卡器闪烁,但性能大致相同。
我可以确认即使我移除
—
vpetersson 2016年
pv
管道,行为也保持不变。我让它运行了30分钟,没有完成。在此期间,它只写了330MiB。
在这种情况下,它必须是
—
AFH 2016年
bash
默认的管道大小; 所以解压缩图像,然后用类似的东西复制它dd if=image.iso of=/dev/rdisk2 bs=32M& while kill -USR1 $!; do sleep 30; done
。这会每30秒发出一次进度消息,但您当然可以更改sleep
参数; 当它也给出了一个错误dd
完成后,你可以通过重定向抑制stderr
的kill
命令。
pv
,或者可能是两个实现中的默认管道大小。如果pv
从管道中省略,则比较这两个命令,但如果解压缩到文件并将其复制为两个单独的操作,则将获得最佳性能,此时您将获得完整的32MB缓冲区。您可以通过发送dd
信号来监控进度USR1
,可能来自后台任务。