6. kvm虚拟机静态迁移

什么是静态迁移?

静态迁移:也叫做常规迁移、离线迁移(Offline Migration)。就是在虚拟机关机或暂停的情况下从一台物理机迁移到另一台物理机。因为虚拟机的文件系统建立在虚拟机镜像上面,所以在虚拟机关机的 情况下,只需要简单的迁移虚拟机镜像和相应的配置文件到另外一台物理主机上;如果需要保存虚拟机迁移之前的状态,在迁移之前将虚拟机暂停,然后拷贝状态至目的主机,最后在目的主机重建虚拟机状态,恢复执行。这种方式的迁移过程需要显式的停止虚拟机的运行。从用户角度看,有明确的一段停机时间,虚拟机上的服务不可用。这种迁移方式简单易行,适用于对服务可用性要求不严格的场合。

说明

(1)虚拟主机各自使用本地存储存放虚拟机磁盘文件

本文实现基于本地磁盘存储虚拟机磁盘文件的迁移方式

(2)虚拟主机之间使用共享存储存放虚拟机磁盘文件

该方式只是在目标虚拟主机上重新定义虚拟机就可以了

静态迁移过程

(1)确定虚拟机关闭状态

1.70

(2)准备迁移clone-3虚拟机,查看该虚拟机配置的磁盘文件

1.71

(3)导入虚拟机配置文件

1.72

(4)拷贝配置文件到目标虚拟主机上

1.73

拷贝虚拟磁盘文件

1.74

目标虚拟主机

上面已经将虚拟机磁盘文件与配置文件都已经复制到目标虚拟主机上了。下面开始配置与启动。

(1) 查看目标虚拟主机环境

1.75

如果上面没有显示虚拟主机,就需要对虚拟主机进行注册

virsh define /etc/libvirt/qemu/clone-3.xml

查看虚拟机磁盘文件,目录结构与源虚拟主机一致。

1.76

(2)启动虚拟主机并确认

1.77

成功连接

1.78

至此虚拟机静态迁移完成。

kvm的那些坑

(1)如果您遇到如下报错您可以这样处理

1.79

查看包版本:

yum info device-mapper-libs

更新软件包:

yum update device-mapper-libs

然后运行如下命令

sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
sed -i 's/#auth_tcp = "sasl"/auth_tcp = "none"/g' /etc/libvirt/libvirtd.conf
sed -i 's/#LIBVIRTD_ARGS="--listen"/LIBVIRTD_ARGS="--listen"/g' /etc/sysconfig/libvirtd
systemctl restart libvirtd

(2)如果您把您的虚拟机静态迁移到不同平台(不同型号的cpu)的主机上报了如下错误

1.80

您可以根据提示修改您的虚拟机配置文件

1.81

Broadwell是原cpu类型,这里根据报错信息将其修改为Broadwell-noTSX

1.82

修改后即可启动虚拟机了!