云计算&虚拟化-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. 更新宿主机状态,确保它不会自动恢复可用状态,这个需要等待人工确认以后才会恢复正常状态。

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

运维小路

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

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

相关推荐
未济8 小时前
linux 配置环境变量
linux
傲世仙尊8 小时前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫8 小时前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
_艾伦 耶格尔.10 小时前
进程间通信
linux
AI职业加油站10 小时前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-0510 小时前
Linux IO编程——静态库、动态库
linux
此冬歌咏11 小时前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
彧azz11 小时前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试
-梅11 小时前
linux(8) 软硬链接
linux·运维·服务器
AIgorithmGEEK12 小时前
[Linux]线程三部曲(上):一个执行流的诞生——从操作系统一路拆到 pthread_create
linux·线程·pid