快速磁盘克隆
时间:2020-03-05 18:50:52 来源:igfitidea点击:
克隆磁盘时是否可以让Linux提前读取?我使用名为" dd"的程序克隆磁盘。我上次执行此操作时,似乎操作系统正在读取然后写入,但从未同时出现过。理想情况下,如果源磁盘可以保持正常运行,则目标磁盘将不断进行写入,而无需等待。
更新:我通常在克隆时选择较大的块大小(例如16M或者32MB)。
解决方案
回答
也许我们可以使用两个过程
dd if=indevfile | dd of=outdevfile
我假设我们可以设置其他适合dd选项。
这有一些开销,但是应该允许阅读之间的异步
一个磁盘,写另一个磁盘。
回答
我们确定不是同时执行此操作吗?我希望磁盘缓存可以确保这种情况发生。如果没有,非阻塞甚至异步读/写都可能会有所帮助,
回答
我们可以尝试使用bs参数增加块大小;默认情况下,我相信dd使用的块大小等于磁盘的首选块大小,这意味着要进行更多的读写操作才能复制整个磁盘。 Linux的dd支持人类可读的后缀:
dd if=/dev/sda of=/dev/sdb bs=1M
回答
关于更新:HD的缓存多大? (特别是写作一)。可能是太多了,我们可能需要减少它以防止不必要的阻塞。
回答
准将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) #