克隆磁盘时有没有办法让Linux预读?我使用名为"dd"的程序来克隆磁盘.我最后一次这样做,似乎操作系统正在阅读然后写作,但从来没有在同一时间.理想情况下,如果源磁盘可以跟上,目标磁盘将不断等待,而不是等待.
更新:我通常在克隆时选择较大的块大小(例如16M或32MB).
Jaeger准将是对的:
dd if=/dev/sda of=/dev/sdb bs=1M
此外,调整驱动器上的"预读"通常可以提高性能.默认值可能是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) #
您可以尝试使用bs参数增加块大小; 默认情况下,我认为dd使用的块大小等于磁盘的首选块大小,这意味着要复制整个磁盘需要更多的读写操作.Linux的dd支持人类可读的后缀:
dd if=/dev/sda of=/dev/sdb bs=1M
对我来说最快:
dd if=/dev/sda bs=1M iflag=direct | dd of=/dev/sdb bs=1M oflag=direct
达到~100MiB/s,而其他选项(单工艺,无直接,默认512b块尺寸......)甚至达不到30MiB/s ......
要观察进度,请在另一个控制台中运行:
watch -n 60 killall -USR1 dd