KVM迁移

一、基础环境部署
安装两台KVM

二、静态迁移
1、安装VNC Viewer
在执行virt-install 命令之前,需要提前准备VNC Viewer
软件,其主要作用是在本地Windows 上来连接KVM 虚拟机,方便管理。

2、创建虚拟机test01
virt-install -n test01 -r 1024 --vcpus=1 --disk path=/data_kvm/store/test01.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /data_kvm/iso/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0
——————————————————————————————————
WARNING 无法连接到图形控制台:没有安装virt-viewer。请安装’virt-viewer’ 软件包。
WARNING 没有控制台用于启动客户机,默认为–wait -1
开始安装…
正在分配’test01.qcow2’ | 10 GB 00:00:01
ERROR unsupported format character '奠(0xffffffe7) at index 47
域安装失败,您可以运行下列命令重启您的域:
‘virsh start virsh --connect qemu:///system start test01’
否则请重新开始安装。
———————————————————————————————————
出现如上错误和警告,是因为非图形化安装,但并不影响正常使用

3、配置虚拟机test01 可通过console 登录
通过VNC连接进去后,输入如下命令
grubby --update-kernel=ALL --args=“console=ttyS0” //添加ttyS0 终端
reboot
在宿主机上输入
virsh console test01
即可远程到test01虚拟机上
若想从虚拟机test01 中退出,可以使用“Ctrl+]”组合键来实现。

4、提取磁盘和配置文件
关闭虚拟机
virsh list --all
virsh shutdown test01
导出虚拟机test01 的xml 配置文件
virsh dumpxml test01 > test01.xml
定位虚拟机test01 的磁盘文件
virsh domblklist test01
拷贝配置文件和磁盘文件到目标宿主机kvm02 上
scp test01.xml 192.168.180.210:/etc/libvirt/qemu/
scp /data_kvm/store/test01.qcow2 192.168.180.210:/data_kvm/store/
配置和启动目标虚拟机
virsh define /etc/libvirt/qemu/test01.xml
virsh start test01
连接虚拟机test01 并验证IP 地址信息
virsh console test01

三、基于共享存储的动态迁移
1、配置NFS 共享存储
在NFS服务器上
yum -y install nfs-utils
mkdir /data
vim /etc/exports
/data 192.168.180.0/24(rw,sync,no_root_squash)
systemctl enable nfs
systemctl enable rpcbind
systemctl start nfs
systemctl start rpcbind

2、在kvm01和kvm02上挂载共享目录
mkdir /data_kvm/kgc
mount -t nfs 192.168.180.220:/data /data_kvm/kgc
设置自动挂载
vim /etc/fstab
192.168.180.220:/data /data_kvm/kgc nfs defaults 0 0

3、创建动态迁移的虚拟机
在KVM01上创建虚拟机
virt-install -n test02 -r 1024 --vcpus=1 --disk path=/data_kvm/kgc/test02.qcow2,size=10 -w bridge:br0 --virt-type=kvm --accelerate --autostart -c /data_kvm/iso/CentOS-7-x86_64-DVD-2009.iso --vnc --vncport=5901 --vnclisten=0.0.0.0
定位虚拟机test01 的磁盘文件
virsh domblklist test02
通过VNC连接进去后,输入如下命令
grubby --update-kernel=ALL --args=“console=ttyS0” //添加ttyS0 终端
reboot
登录虚拟机test02 并查看IP 地址
virsh console test02

4、动态迁移
在真实机器上ping test02ip -t
virsh migrate --live --verbose test02 qemu+ssh://192.168.180.210/system tcp://192.168.180.210
error: Unsafe migration: Migration may lead to data corruption if disks use cache != none or cache != directsync
如出现上述错误,做如下更改:
virsh shutdown test02
virsh edit test02 //添加上红色部分内容

virsh start test02

virsh migrate --live --verbose test02 qemu+ssh://192.168.180.210/system tcp://192.168.180.210

5、生成配置文件
在KVM02上

virsh dumpxml test02 > /etc/libvirt/qemu/test02.xml

virsh define /etc/libvirt/qemu/test02.xml

6、验证迁移结果
登录虚拟机test02 并查看IP 地址

virsh console test02

四、基于数据块的动态迁移

1、在两台kvm上安装依赖包

yum -y install centos-release-qemu-ev && yum -y install qemu-kvm-ev
2、迁移前准备工作
两台kvm分别添加hosts记录

192.168.180.200 kvm01

192.168.180.210 kvm02

3、分别查看两台KVM上虚拟机状态

kvm01

virsh list --all
Id 名称 状态

1 test01 running
3 test02 关闭

kvm02

virsh list --all
Id 名称 状态

3 test02 running

4、两台机器上都检查资源池

virsh pool-list --all

5、在KVM02上创建同名磁盘文件

qemu-img create -f qcow2 /data_kvm/store/test01.qcow2 10G

6、在kvm01上执行迁移操作
virsh migrate test01 qemu+ssh://192.168.180.210/system --live --persistent --undefinesource --copy-storage-all --verbose

错误:内部错误:无法执行 QEMU 命令 ‘migrate’:this feature or command is not currently supported

解决方案:
在kvm01和kvm02上都要操作
vim /etc/yum.repos.d/qemu-kvm-rhev.repo

[qemu-kvm-rhev]

name=oVirt rebuilds of qemu-kvm-rhev

baseurl=http://resources.ovirt.org/pub/ovirt-3.5/rpm/el7Server/
mirrorlist=http://resources.ovirt.org/pub/yum-repo/mirrorlist-ovirt-3.5-el7Server

enabled=1

skip_if_unavailable=1

gpgcheck=0

yum remove -y qemu-kvm-ev && yum install -y qemu-kvm-ev
systemctl restart libvirtd

virsh migrate test01 qemu+ssh://192.168.180.210/system --live --persistent --undefinesource --copy-storage-all --verbose

7、迁移结果
[root@kvm01 ~]# virsh list --all
Id 名称 状态

  • test02                         关闭
    

[root@kvm02 ~]# virsh list --all
Id 名称 状态

3 test02 running
4 test01 running

五、KSM

1、查看内核是否支持

egrep -i ksm /boot/config-3.10.0-1160.62.1.el7.x86_64

2、克隆虚拟机

virt-clone -o test02 -n test03 -f /data_kvm/store/test03.qcow2
virt-clone -o test02 -n test04 -f /data_kvm/store/test04.qcow2

3、记录开启KSM之前内存使用情况

[root@kvm02 ~]# free -m
total used free shared buff/cache available
Mem: 3770 1205 138 12 2426 2297
Swap: 2047 0 2047

4、启动KSM服务

systemctl start ksm && systemctl start ksmtuned

echo 1 > /sys/kernel/mm/ksm/run
5、对比KSM开启之后的内存使用情况

[root@kvm02 ~]# free -m
total used free shared buff/cache available

Mem: 3770 873 155 3 2741 2651

Swap: 2047 13 2034

相关推荐

  1. KVM迁移

    2023-12-08 08:44:03       22 阅读
  2. kvm虚拟机迁移--来自gpt

    2023-12-08 08:44:03       10 阅读
  3. kali kvm

    2023-12-08 08:44:03       33 阅读
  4. kvm 虚拟化

    2023-12-08 08:44:03       30 阅读
  5. KVM基础管理命令

    2023-12-08 08:44:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 08:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 08:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 08:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 08:44:03       20 阅读

热门阅读

  1. vue3在table里使用elementUI的form表单验证

    2023-12-08 08:44:03       40 阅读
  2. Boost:asio单io_service,多线程run

    2023-12-08 08:44:03       28 阅读
  3. C++设计模式学习之一(共计13种)

    2023-12-08 08:44:03       32 阅读
  4. LISP~~~~~

    2023-12-08 08:44:03       37 阅读
  5. Spring Kafka常用配置详解

    2023-12-08 08:44:03       33 阅读
  6. c++通过serial库进行上下位机通信

    2023-12-08 08:44:03       40 阅读