Answers:
/var/lib/libvirt/images
src主机上复制到目标主机上的相同目录virsh dumpxml VMNAME > domxml.xml
然后将此xml复制到目标主机virsh define domxml.xml
启动虚拟机。
virsh net-dumpxml > netxml.xml
和virsh net-define netxml.xml && virsh net-start NETNAME & virsh net-autostart NETNAME
)/dev/mapper/vgname-lvname
有
由于无法发表评论,因此我必须以这种方式将这份附录发布到dyasny的答案中。
如果VM具有要保留的快照,则应将源中的快照xml文件转储virsh snapshot-dumpxml $dom $name > file.xml
到VM的快照列表中,其中包含每个快照virsh snapshot-list --name $dom
。
然后在目标上使用virsh snapshot-create --redefine $dom file.xml
来完成快照的迁移。
如果您还关心当前快照是哪个快照,则另外在源:
virsh snapshot-current --name $dom
和目标上执行:
virsh snapshot-current $dom $name
然后,您可以virsh snapshot-delete --metadata $dom $name
为每个快照使用来删除源上的xml文件,也可以只从中删除它们。/var/lib/libvirt/qemu/snapshots/$guestname
资料来源:
是的,仅复制XML文件和虚拟磁盘映像就足够了,但这显然排除了“实时”迁移。在此过程中必须关闭VM。
复制到目标位置后,libvirtd
必须重新加载或重新启动以识别新的XML文件。
virsh
。我只是直接复制文件并重新加载libvirtd
。
这些说明适用于使用LVM提供的磁盘的VM,并假定Python位于每个主机上
从https://gist.github.com/rcoup/1338263下载blocksync.py脚本,并将其放在/ home / user文件夹中的源主机和目标主机上。
您还需要在两台计算机上都具有“ sudo”访问“ root”权限。
或者,您可以以root用户身份执行所有操作,但前提是您的ssh密钥可以让您至少对目标计算机具有root用户访问权限。**在这种情况下,请从命令行中删除用户名。
ssh user@chewie.domainname.com.au
sudo virsh --all
sudo virsh dumpxml拉里> larry.xml
将转储的定义复制到新计算机(“目标”主机),例如:
scp -p larry.xml 10.10.10.38:larry.xml您可以将内部ip更改为目标dom0服务器名称**注意:最好使用目标的ip地址,例如:
scp -p larry.xml user@10.10.10.38:larry.xml
如果由于键而无法复制,则将cat larry.xml进行复制,然后可以将其SSH到其他计算机中并创建文件并将其粘贴。
使用以下命令找到虚拟机磁盘的大小和名称
sudo lvs --units B。
LV VG Attr LSize池原始数据%Meta%移动日志Cpy%Sync转换 lv_root vg1 -wi-ao ---- 53687091200B lv_swap vg1 -wi-ao ---- 17179869184B vm_vsrv1 vg1 -wi-ao ---- 193273528320B vm_vsrv10 vg1 -wi-ao ---- 64424509440B vm_vsrv11 vg1 -wi-ao ---- 161061273600B vm_vsrv12 vg1 -wi-ao ---- 204010946560B vm_vsrv2 vg1 -wi-ao ---- 140110725120B vm_vsrv3 vg1 -wi-ao ---- 128849018880B vm_larry vg1 -wi-ao ---- 69793218560B vm_vsrv5 vg1 -wi-ao ---- 257698037760B vm_vsrv6 vg1 -wi-ao ---- 64424509440B vm_vsrv7 vg1 -wi-ao ---- 161061273600B vm_vsrv8 vg1 -wi-ao ---- 64424509440B vm_vsrv9 vg1 -wi-ao ---- 214748364800B
ls -l / dev / vg1 / vm_larry是:lrwxrwxrwx。1根根8 Jan 31 13:57 / dev / vg1 / vm_larry-> ../dm-11
ssh user@darth.domainname.com.au
创建一个卷定义文件,例如:
vi larry.domainname.com.au-vol.xml要么
纳米larry.domainname.com.au-vol.xml并带有以下几行:注意-您将需要从原始VM中获取字节大小,并放入以下脚本中。源计算机上用于大小的命令是sudo lvs --units B
<volume type='block'>
<name>larry.domainname.com.au</name>
<capacity unit='bytes'>69793218560</capacity>
<allocation unit='bytes'>69793218560</allocation>
<target>
<path>/dev/centos/larry.domainname.com.au</path>
<permissions>
<mode>0600</mode>
<owner>0</owner>
<group>6</group>
<label>system_u:object_r:fixed_disk_device_t:s0</label>
</permissions>
</target>
</volume>
注意:此定义适用于用于VM拉力的69793218560 Bytes磁盘,请根据实际VM的需要进行更改。
注意:名称和路径的最后一部分应匹配,并将用作新磁盘名称。
使用以下命令从定义中创建新磁盘
sudo virsh vol-create --pool centos larry.domainname.com.au-vol.xml
它会说从larry.domainname.com.au-vol.xml创建的Vol larry.domainname.com.au
使磁盘设备文件可访问:
sudo chgrp wheel /dev/mapper/centos-larry.domainname.com.au
须藤chmod g + rw /dev/mapper/centos-larry.domainname.com.au
编辑复制的xml定义,例如:
vi larry.xml
在文件中找到磁盘定义(搜索“ source dev =“),然后将设备替换为刚创建的设备(您可以通过/ dev / centos /查看vm),例如:/ dev / drbd4-> / dev / centos / larry.domainname.com.au
**在接口节中找到对“ br1”的任何引用,并将其更改为“ br0”,例如,您正在更改源网桥,因此行是这样的
登录到源主机,例如
ssh user@chewie.domainname.com.au
最佳实践是在完成最终同步之前关闭源主机上的VM,但不需要这样做。(关闭虚拟机NameOfMachine)
如果尚未在源主机上,请从https://gist.github.com/rcoup/1338263下载blocksync.py脚本
例如,如果您的用户名是user,则将blocksync.py脚本复制到两台计算机上,分别复制到/ home / user和chown user:user和chmod 755脚本中。
scp -p blocksync.py用户@ 10.10.10.38:blocksync.py
sudo -E python blocksync.py / dev / vg1 / vm_larry user@10.10.10.38 /dev/mapper/centos-larry.domainname.com.au -b 4194304
注意:第一个设备名称是源主机的名称,由“ lvs”命令确定;这是[[chewie]]源主机的。
注意:这将破坏目标磁盘的内容,请确保/dev/mapper/centos-larry.domainname.com.au正确!
注意:同步将花费很长时间-每千兆字节大约100秒,即:60 GB磁盘90分钟。
但是,您可以在使用VM时进行同步。后续同步速度最高可提高25%
该脚本将打印出它正在使用的参数(可能会出现有关已弃用模块的消息,可以)。接下来,它显示它正在使用的ssh命令并运行它(执行此操作时,您将看到仅授权人员消息)。在同步期间,它将显示正在运行的块总数及其平均速度。最后,它会打印出完成消息以及所花费的秒数。
您可以使用CTRL C取消同步,然后稍后再次运行命令重新启动同步
ssh user@darth.domainname.com.au
virsh定义larry.xml
须藤维尔什开始拉里
sudo virsh autostart拉里
注意:可能有必要更改VM的详细信息以适应新环境。
我在几台较旧的KVM服务器上遇到了此问题,但发生时确实很烦人,并且可能导致任何已安装的VM出现问题。以我为例,由于磁盘空间缓慢耗尽,它经常将我的其中一个VM推入复位状态。以下说明对KVM / Distro版本有些敏感。就我而言,我有CentOS 7.5
CentOS Linux release 7.5.1804 (Core) and Qemu-KVM version 1.5.3
默认情况下,KVM映像位于/ var / lib / libvirt / images /
您需要找到VM的名称,为此使用virsh列表
virsh list
Id Name State
----------------------------------------------------
12 VM-Name paused
停止VM virsh停止VM名称
对我来说,我首先复制文件,而不是移动文件。将qcow文件复制到新位置
cp /var/lib/libvirt/images/VM-Name.qcow2 /home/VMImages/
编辑VM xml文件,以引用新的“源文件”位置virsh编辑VM名称
您将需要更改“源文件”此文件
重新启动libvirtd服务
service libvirtd restart
然后重新启动VM,您应该一切顺利。
virsh start VM-Name