云计算&虚拟化-kvm-虚拟机迁移(冷迁移&故障迁移)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用(本小节属于)

4.kvm技术原理

5.vmware介绍&使用

6.小结

虚拟机的迁移主要分三种:冷迁移,热迁移和故障迁移。冷迁移,主要指的是虚拟机在处于关机状态下的迁移。热迁移则说的是虚拟机在运行中的迁移。故障迁移则说的是虚拟机所在节点故障以后触发的迁移。

由于为了演示热迁移,所以迁移将分两小节来讲解,本小节将主要介绍冷迁移和故障迁移。

通过我们前面几节的学习,我们知道一个虚拟机主要包含配置文件,就是xxx.xml文件,另外一个就是虚拟机的镜像文件,而我们前面演示的虚拟机都是使用的本地文件,配置文件也在本地。那么故障迁移肯定是无法做到的,因为虚拟机因为机器故障已经失联,我们无法操作该虚拟机对应的文件和配置文件。

冷迁移

冷迁移是指在虚拟机关机的状态下进行的迁移。这种迁移通常涉及以下步骤:

  1. 备份虚拟机:包括虚拟机的磁盘文件和配置文件(其实好像也不需要再备份)。

  2. 传输文件:将这些文件复制或移动到新的宿主服务器上。

  3. 重新配置:如果需要的话,更新虚拟机的配置以适应新环境。

  4. 启动虚拟机:在新的宿主服务器上启动虚拟机。

    #其实备份是不需要的,在虚拟机关机状态下直接复制即可 rsync -avz xxx.xml root@1.1.1.1:/etc/libvirt/qemu/

    #文件要和原始路径一致,或者修改xml里面的路径 rsync -avz xxx.qcow2 root@1.1.1.1:/data/image

    #重新定义虚拟机virsh define /etc/libvirt/qemu/xxx.xml

本质上这个迁移和上一小节基于文件复制或者clone虚拟机是一样的操作,只是这个把操作从复制文件到本地变成到另外一台服务器,需要注意的就是复制过去以后,需要确保网络连通性。

另外我们在解释kvm主机的镜像文件的时候,KVM-磁盘格式介绍说过,如果raw格式,即便是空文件,通过网络传输的时候,也会传输定义的大小,如下图。

解决办法,转换成qcow2文件进行传输

csharp 复制代码
[root@localhost raw]# qemu-img convert -c -O qcow2 image_file.img output.qcow2
[root@localhost raw]# ll
total 1220
-rw-r--r-- 1 root root 21474836480 Nov  1 21:41 image_file.img
-rw-r--r-- 1 root root      197120 Nov  1 21:52 output.qcow2
[root@localhost raw]# du -sh image_file.img 
1.0M  image_file.img
[root@localhost raw]# du -sh output.qcow2 
196K  output.qcow2

故障迁移

前面说过,使用本地数据是没有办法故障迁移的,所以故障迁移的前提条件是镜像文件和配置文件都不保存在本地。存储可以使用共享存储,比如分布式存储ceph,配置文件则存储在数据库里面。

那怎么触发故障迁移呢?作者在某头部云厂商工作的经历来说,他们是定义了下面2个条件。

第一个条件是ping不可达,由于是专门的计算服务器,所以在很少干扰的情况下ping不可达确实可以作为判断服务器是否故障的依据,如果真的出现了ping不可达的情况,则管控节点根据自己的逻辑进行故障迁移流程。

第二个条件则是agent上报超时,每个计算节点都有一个专门的agent进程,用于统计或者监控计算服务器的信息,这个agent会定时上报服务器情况,如果服务器未按照预期上报主机状态,则管控节点也会根据自己的逻辑进行故障迁移流程。

故障迁移流程一般包含下面内容(不保证准确,仅供参考)。

  1. 下发故障虚拟机的配置文件和镜像文件到目标主机,供主机拉起。

  2. 下发故障虚拟机对应的路由信息等,确保该主机能正常加入网络,并隔离原有故障网络。

  3. 更新这个虚拟机的状态信息,比如原来在A服务器,现在迁移到了B服务器。

  4. 更新宿主机状态,确保它不会自动恢复可用状态,这个需要等待人工确认以后才会恢复正常状态。

当然,如果大家使用公有云,以目前公有云的体量来说,还是不容易遇到的,作者多年的公有云使用经验到目前为止只遇到过一次,所以我们需要确保自己业务是高可用及自动恢复的。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
小闫BI设源码1 小时前
uniapp使用腾讯云获取位置转为省市区
uni-app·云计算·腾讯云
Octopus20771 小时前
【Linux】vim的使用
linux·笔记·学习·vim
一个假的前端男1 小时前
VMware安装CentOS 9 及mysql的安装
linux·运维·centos
北京迅为1 小时前
【北京迅为】iTOP-4412全能版使用手册-第七章 Android 4.4系统编译
linux·嵌入式硬件·4412开发板
大风吹PP凉2 小时前
47小型项目的规划与实施
linux·运维·服务器
炽天使2 小时前
aws配置飞书告警通知
云计算·监控·aws·webhook·告警通知
金鸣科技官方QQ2 小时前
高效制作定期Excel报表:自动化与模板化的策略
运维·自动化·excel
Bio Coder3 小时前
shell查看服务器的内存和CPU总量
运维·服务器·内存·cpu
ccnnlxc3 小时前
shell编程第四天(day036)
linux·运维·服务器
基极向上的三极管3 小时前
【Linux学习】【Ubuntu入门】1-10 ubuntu文件权限
linux·ubuntu