我有一个KVM主机,上面有几个KVM。每个VM在主机上使用一个逻辑卷。我需要把LVs拷贝到另一台主机上。
一般情况下,我会用这样的方法:
dd if=/the/logical-volume of=/some/path/machine.dd若要将LV转换为图像文件,请使用SCP移动它。然后使用DD将文件复制回新主机上的新LV。
这种方法的问题在于,您需要的磁盘空间是VM在这两台机器上占用磁盘空间的两倍。即。一个5GB的LV为LV使用了5GB的空间,dd副本也为图像使用了5GB的额外空间。对于小LVs来说,这是可以的,但是如果(就像我的情况一样)您有一个500 LV的LV来支持一个大VM,该怎么办呢?新的主机有一个1TB硬盘,所以它不能保存一个500 to的dd图像文件,并且有一个500 to的逻辑卷可以复制到主机操作系统和其他较小的客人的空间。
我想做的是:
dd if=/dev/mygroup-mylv of=192.168.1.103/dev/newvgroup-newlv换句话说,通过网络将数据直接从一个逻辑卷复制到另一个逻辑卷,并跳过中间图像文件。
这个是可能的吗?
发布于 2012-02-09 01:27:07
当然,这是可能的。
dd if=/dev/mygroup-mylv | ssh 192.168.1.103 dd of=/dev/newvgroup-newlv轰隆隆。
不过,帮你自己一个忙,用一些比默认的块更大的东西。可以添加bs=4M (4MB块的读/写)。你可以看到评论中有一些关于区块的吹毛求疵;如果这是你发现自己经常做的事情,花点时间用不同的区块尝试几次,看看什么能让你获得最佳的传输速率。
回答评论中的一个问题:
您可以通过光伏传输传输以获取有关传输的统计信息。这比向dd发送信号所得到的输出要好得多。
我也要说,当然,使用netcat --或者其他不增加加密开销的东西--会更有效,但我通常会发现,额外的速度是在一些不方便的情况下出现的。除非我正在移动非常大的数据集,否则我通常坚持使用ssh,尽管开销很大,因为在大多数情况下,所有的东西都已经设置为只工作了。
发布于 2013-06-12 12:52:59
这是一个优化的版本,它展示了使用pv的过程,使用BS作为更大的块,并使用gzip来减少网络流量。
当数据在像互联网服务器这样的缓慢连接之间移动时,这是非常完美的。我建议在屏幕或tmux会话中运行该命令。这样,从执行命令的地方到主机的ssh连接就可以毫不费力地断开连接。
$ dd if=/dev/volumegroupname/logicalvolume bs=4096 | pv | gzip | \
ssh root@78.46.36.22 'gzip -d | dd of=/dev/volumegroupname/logicalvolume bs=4096'发布于 2016-07-16 15:14:46
首先,我将拍摄lv的快照:
lvcreate --snapshot --name my_shot --size <thesize> /dev/<name of vg>/<name of lv>之后,您必须在新主机上创建一个大小相同的新lv (例如,使用lvcreate)。然后,您可以直接将数据复制到新主机。下面是copy命令的示例:
dd if=/dev/vg0/my_shot bs=4096 | pv | ssh root@some_host -C 'dd of=/dev/vg1/<created lv> bs=4096'我使用这个过程将proxmox维护的VM复制到另一个主机。逻辑卷包含由VM本身维护的几个额外的LV。
https://serverfault.com/questions/358228
复制相似问题