我有一台KVM主机,上面有几个虚拟机.每个VM使用主机上的逻辑卷.我需要将LV复制到另一台主机.
通常,我会使用类似的东西:
dd if=/the/logical-volume of=/some/path/machine.dd
将LV转换为图像文件并使用SCP移动它.然后使用DD将文件复制回新主机上的新LV.
此方法的问题是您需要两倍于VM在两台计算机上占用的磁盘空间.即. 5GB LV为LV使用5GB空间,dd拷贝还为图像使用了额外的5GB空间.这对于小型LV来说很好,但是如果(对于我的情况)你有一个500GB的LV用于大型VM呢?新的主机有一个1TB的硬盘驱动器,因此无法容纳500GB的dd映像文件,并且有500GB的逻辑卷可以复制到主机操作系统,并为其他小客户提供空间.
我想做的是:
dd if=/dev/mygroup-mylv of=192.168.1.103/dev/newvgroup-newlv
换句话说,通过网络将数据直接从一个逻辑卷复制到另一个逻辑卷,并跳过中间映像文件.
这可能吗?
解决方法
当然,当然有可能.
dd if=/dev/mygroup-mylv | ssh 192.168.1.103 dd of=/dev/newvgroup-newlv
繁荣.
尽管如此,请帮自己一个忙,并使用大于默认块大小的东西.也许添加bs = 4M(读取/写入4 MB的块).你可以看到评论中有一些关于块大小的挑剔;如果这是你发现自己经常做的事情,花一点时间用不同的块大小尝试几次不同的时间,并亲自看看是什么让你获得最佳的传输率.
回答评论中的一个问题:
您可以通过pv管道传输以获取有关传输的统计信息.它比从发送信号到dd的输出更好.
我还要说,虽然当然使用netcat – 或其他任何不会增加加密开销的东西 – 会更有效率,但我通常会发现额外的速度会带来一些方便性的损失.除非我在大型数据集中移动,否则我通常会坚持使用ssh,因为在大多数情况下,所有内容都已设置为Just Work.