Joh*_*eff 10
Jaeger准将是对的:
dd if=/dev/sda of=/dev/sdb bs=1M
Run Code Online (Sandbox Code Playgroud)
此外,调整驱动器上的"预读"通常可以提高性能.默认值可能是256,最佳1024.每个设置都不同,因此您必须运行基准测试才能找到最佳值.
# blockdev --getra /dev/sda
256
# blockdev --setra 1024 /dev/sda
# blockdev --getra /dev/sda
1024
# blockdev --help
Usage:
blockdev -V
blockdev --report [devices]
blockdev [-v|-q] commands devices
Available commands:
--getsz (get size in 512-byte sectors)
--setro (set read-only)
--setrw (set read-write)
--getro (get read-only)
--getss (get sectorsize)
--getbsz (get blocksize)
--setbsz BLOCKSIZE (set blocksize)
--getsize (get 32-bit sector count)
--getsize64 (get size in bytes)
--setra READAHEAD (set readahead)
--getra (get readahead)
--flushbufs (flush buffers)
--rereadpt (reread partition table)
--rmpart PARTNO (disable partition)
--rmparts (disable all partitions)
#
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用bs参数增加块大小; 默认情况下,我认为dd使用的块大小等于磁盘的首选块大小,这意味着要复制整个磁盘需要更多的读写操作.Linux的dd支持人类可读的后缀:
dd if=/dev/sda of=/dev/sdb bs=1M
Run Code Online (Sandbox Code Playgroud)
小智 6
对我来说最快:
dd if=/dev/sda bs=1M iflag=direct | dd of=/dev/sdb bs=1M oflag=direct
Run Code Online (Sandbox Code Playgroud)
达到~100MiB/s,而其他选项(单工艺,无直接,默认512b块尺寸......)甚至达不到30MiB/s ......
要观察进度,请在另一个控制台中运行:
watch -n 60 killall -USR1 dd
Run Code Online (Sandbox Code Playgroud)