kvm虚拟机热迁移

1. 迁移介绍

迁移:

系统的迁移是指把源主机上的操作系统和应用程序移动到目的主机,并且能够在目的主机上正常运行。在没有虚拟机的时代,物理机之间的迁移依靠的是系统备份和恢复技术。在源主机上实时备份操作系统和应用程序的状态,然后把存储介质连接到目标主机上,最后在目标主机上恢复系统。随着虚拟机技术的发展,系统的迁移更加灵活和多样化。

最终我们迁移的目的就是:

简化系统维护管理

高系统负载均衡

增强系统错误容忍度

优化系统电源管理

2. 热迁移 ---Live Migration

KVM 虚拟机的热迁移 ---Live Migration:服务器虚拟化技术是当前的热点,而虚拟机的“热迁移( Live Migration )”技术则是虚拟化技术当中的热点。

热迁移(又叫动态迁移、实时迁移),即虚拟机保存( save ) / 恢复 (restore) :将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。

迁移的种类:

P2P :物理机之间的迁移

V2P :虚拟机迁到物理机

P2V :物理机迁到虚拟机

V2V :虚拟机迁到虚拟机

3. 热迁移的应用

1. 虚拟机的热迁移技术最初是被用于双机容错或者负载均衡:当宿主机出现软硬件故障导致服务异常时,虚拟机可漂移到另外主机上,或者在集群中依据工作负载量的大小,选择更换宿主机与否来保证自身良好的服务提供性。

2. 系统硬件维护:当前很多操作系统都能够稳定支持 7×24 运行,但是硬件却需要定期的进行维护。如果使用虚拟机的动态迁移技术,将虚拟机从需要维护的物理机器迁移到另外一主器,等维护完成后,在将其迁回到原来的物理机器。所有的系统服务和应用程序在迁移 & 恢复后仍旧正常运行,用户不会察觉到由于硬件维护造成的中断。最终实现了我们服务不受硬件维护干扰的 7*24 小时的工作愿望。

3. 数据库备份:对于一些大型、关键的数据库应用,备份是一项重要但复杂的工作。虚拟机的保存/ 恢复可以将数据库运行在虚拟机中,如需备份就保存虚拟机,这样数据库中的所有数据、状态都做了备份。如果数据库崩溃了,就可以通过恢复虚拟机来恢复整个数据库。

4. 环境重现:进行性能测试或程序调试时,都需要重现当时复杂庞大并且与实时完全一致的网络环境 , 不仅仅是重启、配置软件,而且常常需要一定的运行时间。我们可以将各服务安装到独立的各个虚拟机,然后利用各个独立虚拟机部署我们所需的工作环境,可以大大缩短环境重现时间。

5. 计算机共享: 在一些公共场合用户需要共享计算机,但是由于不同的系统配置和软件需要花费大量的时间来配置和恢复。这时使用虚拟机的保存 /恢复可以很好地解决这个问题。或者也可以,在物理机上运行多个逻辑虚拟机帮助我们分配给每一个需要者一个独立,安全,稳定的环境。当因为宿主机出现问题影响虚拟机使用时,我们可以让该虚拟机漂移到其他宿主机以此来保持正常工作。

4. 热迁移的优势

1. 首先是可伸缩性比较强, IT 管理者可以在合理时间段让运行某些关键业务的服务器适当减少工作量,以便进行更新操作系统,给应用程序打补丁等。而到了服务高峰期,又可以弹性地进行大负载量的运算。虚拟机迁移过程完全透明,几乎不影响使用。

2. 其次,现在的数据中心都追求环保节能, 工作量负载大的应用程序必然会令服务器能耗增加,有了虚拟机热迁移技术,当一台物理服务器负载过大时,系统管理员可以将其上面的虚拟机迁移到其他服务器,可有效减低数据中心服务器的总体能耗,再通过冷却系统将数据中心的温度保持在正常水平。

5. 热迁移的局限

进行虚拟机的热迁移也有不少的限制。例如,

VMotion 在进行迁移之前,管理软件会检测目标服务器的 X86 架构是否与原服务器兼容。包括存储设备以及处理器,虚拟机必须放到共享的存储里, CPU 的类型也要一样,不仅不能一个是英特尔,一个是 AMD ,甚至相同厂商不同产品线的CPU 也不行,比如英特尔至强和奔腾

6. 衡量虚拟机迁移的效率

1. 整体迁移时间:从源主机中迁移操作开始到目的主机上客户机服务处于不可用状态的时间,此时源主机上客户机已经暂停服务,目的主机上的客户机还未恢复服务。

2. 服务器停机时间:在迁移过程中,源主机和目的主机上的客户机都处于不可用状态的时间,此时源主机上客户机已暂停,目的目的主机上客户还未恢

复服务。

3. 对服务的性能影响:不仅包括迁移后的客户机中应用程序的性能与迁移前相对比是否有所降低,还包括迁移后对目的主机上的其他服务的性能影响。

Kvm 动态迁移,也有如下几个建议和注意事项:

1. 源宿主机和目的宿主机直接尽量用网络共享的存储系统来保存客户机磁盘镜像。例如 NFS , ISCSI , Glusterfs 等。

2. 为了提高动态迁移的成功率,尽量在同类型 cpu的主机上面进行动态迁移,尽管 kvm 动态迁移也支持从 Intel 平台迁移到 amd 平台。 但,从安全性,稳定度考虑不建议这样去操作!!!

3. 64 位的客户机只能运行在 64 宿主机之间的迁移,而 32 位客户机可以在 32 宿主机和 64 位宿主机之间迁移。

4. 在进行动态迁移时,被迁移客户机的名称是唯一的,在目的宿主机上不能有与源宿主机被迁移客户机同名的客户机存在。

5. 目的宿主机和源宿主机的软件尽可能的相同。也就是同为 Vmware , KVM , Xen 等。

7. v2v迁移实践

安装前准备工作:

迁移需要识别 source&target 主机的主机名所以需要我们搭建 DNS Ser 或者将 IP& 域名 & 主机名的对应条目写入到 hosts 文件中去。

实验目标

将192.168.88.20热迁移到192.168.88.21

实验环境:

Source Ser ---- VM

Target Ser

NFS Server 共享存储服务器

实验步骤:

(1)NFS Server

192.168.88.20端

[root@aa ~]# vim /etc/exports

clip_image002

[root@aa ~]# vim /etc/hosts

clip_image003

[root@aa images]# vim /etc/hosts #域名解析

clip_image004

(2)Source Server

192.168.88.21端

[root@bb ~]# mkdir /nfsdate

[root@bb ~]# mount 192.168.88.20:/nfsdate /nfsdate

[root@bb ~]# df -h

clip_image005

[root@bb nfsdate]# vim /etc/hosts

clip_image004[1]

(3)将vm3的文件保存至共享目录中

192.168.88.20端

clip_image006

[root@aa nfsdate]# cd /etc/libvirt/qemu/

clip_image007

[root@aa qemu]# cp vm3.xml /root/

[root@aa qemu]# virsh undefine vm3

clip_image008

[root@aa qemu]# cd /var/lib/libvirt/images/

clip_image009

[root@aa images]# mv vm3.qcow2 /nfsdate/

[root@aa images]# cd /nfsdate/

clip_image010

[root@aa nfsdate]# cd /root/

[root@aa ~]# vim vm3.xml

clip_image011

[root@aa ~]# virsh define vm3.xml

clip_image012

[root@aa ~]# virsh list --all

clip_image013

[root@aa ~]# virsh start vm3

(4)热迁移

连接要热备份的宿主机,并将要备份的虚拟机开启,进行如下操作:

clip_image014

clip_image015

clip_image016

迁移成功,且迁移过来的状态为迁移前的状态。

转载于:https://www.cnblogs.com/liangzb310/p/11079066.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Backtrace函数打印调用栈 - Debug居家必备

glibc提供了backtrace这个库函数,可以用来打印call stack。比如我们可以在程序中注册常见的一些signal,比如SIGSEGMENT, SIGPIPE,然后在这些信号的回调函数中,利用backtrace打印出call stack,这样debug就非常的方便。 …

《C语言及程序设计》实践项目——三种循环语句

返回:贺老师课程教学链接 【项目1:利用循环求和】求1000以内所有偶数的和要求:请编出3个程序来,分别用三种循环语句完成,注意体会各种循环语句的执行过程及语法特点。[参考解答]【项目2:求阶乘】输入n&…

C语言数组学完学啥,我的c语言学习-数组专题

学到最后的数组专题了。数组数组,怎么着也要是一组数吧,对,数组是按顺序排列的一组同类型的数据构成的集合,用来保存大量同类型的相关数据。一 一维数组定义一个一维数组int a[5],表示有五个元素,a[0]、a[1]、a[2]…

通过图表简化sql语句的表关联

在之前的博文中分享过一个执行了两天的一条sql语句,走了两个大表的扫描,导致执行时间很长,通过简化sql做了不小的改进,今天我们来看看还可以做些什么。 上次简化后的语句如下:with tmp_logical_date as (SELECT logica…

输入三个数,按照由大到小的顺序输出

voidswap(int*p1,int*p2)/*实现两个数交换的函数*/{inttemp; temp*p1;*p1*p2;*p2temp;}voidexchange(int*p1,int*p2,int*p3)/*实现3个数两两比较、交换的函数*/{if(*p1<*p2) swap(p1,p2);/*比较第一个数和第二个数*/if(*p1<*p3) swap(p1,p3);/*比较第一个数和第三个数*/i…

android 自定义text,android – 使用自定义textSize实现自定义TextView

我已经实现了自定义TextView,然后我需要更改其文本大小以供将来使用.在那一步,我决定使用style.xml和attr.xml进行textSize自定义但是,当我的自定义布局膨胀时,我收到运行时错误.与我为了自定义而更改的部件相关的错误.这是我实现的代码片段.attr.xmlstyles.xml?attr/right_de…

[翻译] BFKit

BFKit BFKit is a collection of useful classes to develop Apps faster. BFKit是一个有用的工具集合&#xff0c;帮助你快速开发。 Installing and Usage Pod Pod安装 Create a Podfile in your project directoryWrite:platform :ios, 7.0xcodeproj Project.xcodeproj pod …

Camera Vision - video surveillance on C#

http://www.codeproject.com/KB/audio-video/cameraviewer.aspx 开发的资源 介绍&#xff1a;纵观当今的监控系统的发展趋势&#xff0c;能很容易发现基于IP的解决方案正在迅速的普及。有许多的制造商&#xff0c;提供广泛的IP视频射像和视频服务器&#xff0c;意味着个人的IP…

android 接口定义常量,Android开发笔记(5):常量的合理使用

今天&#xff0c;我们来聊一些“细枝末节”的问题——java中的常量。觉得很有意思&#xff0c;给大家分享一下&#xff1a;下面是我见过的几种常量定义操作&#xff1a;1.普通款&#xff1a;public class Constants {private Constants(){}public static final int MAX Intege…

mysql数据库操作手册

1 存储过程的写法 以下是一个带有入参的存储过程模板&#xff0c; #删除方案-存储过程 CREATE PROCEDURE procPersonAppointRecallPlanByPlanUuidDelete(in planUuid varchar(48)) BEGIN update PERSON_APPOINT_RECALL_DUTY set duty_status 2 WHERE duty_list_uuid in (sel…

如何写 go 代码 (How to Write Go Code 翻译)

目录 1. 写在前面的话2. 介绍3. 代码组织 3.1. 工作区3.2. GOPATH 环境变量3.3. Package 路径3.4. 第一个 GO 程序3.5. 第一个 GO 库3.6. Package name4. 测试5. 远程 package6. 下一步7. 获取帮助写在前面的话 本文为Go官方网站 How to Write Go Code 这篇文章的翻译, 水平有限…

Servlet规范定义的Servlet 生命周期

Servlet有良好的生存期的定义&#xff0c;包括如何加载、实例化、初始化、处理客户端请求以及如何被移除。这个生存期由javax.servlet.servlet接口的init,service和destroy方法表达。1、加载和实例化 容器负责加载和实例化一个Servlet。实例化和加载可以发生在引擎启动的时候&…

android auto 源代码,最近心血来潮,把Androidautosize的源码搂了一眼

https://codechina.csdn.net/mirrors/jessyancoding/androidautosize?utm_sourcecsdn_github_accelerator以上是Androidautosize的源码&#xff0c;有兴趣的就去下下来搂一眼我这边还没看完&#xff0c;就把最基础的看了一下&#xff0c;然后顺了下简单的流程&#xff0c;顺便…

11次作业

1、实验要求&#xff1a;建立一个通信录&#xff0c;通信录的结构体记录包括&#xff1a;姓名、生日、电话号码&#xff1b;其中生日又包括三项&#xff1a;年、月、日。编写程序&#xff0c;定义一个嵌套的结构类型&#xff0c;输入n&#xff08;n<10&#xff09;个联系人的…

Lucene.net 下载地址

Lucene.net 官方网站 http://lucene.apache.org/lucene.net/ Lucene.net 2.9.2 下载地址 Lucene.Net_2_9_2/ 转载于:https://www.cnblogs.com/leco/archive/2010/12/22/1913806.html

android内存卡测试,安卓sd卡真假检测工具_内存卡检测扩容卡软件_sd insight

内存卡检测扩容卡软件内存卡检测扩容卡软件由于U盘、TF卡&#xff0c;sd内存卡等移动存储设备越来越便宜&#xff0c;导致很在某宝上买到便宜且容量大的U盘或者内存卡&#xff0c;结果基本上都是扩容盘&#xff0c;所谓扩容盘&#xff0c;就是实际容量比如2G的U盘&#xff0c;经…

bashrcprofile

# /etc/bashrc# are we an interactive shell? 是交互式的shell吗&#xff1f;# System wide functions and aliases //系统功能和别名比如说&#xff1a;你设置个别名alias xixdate当你键入xix时&#xff0c;那么系统显示为命令date的信息。&#xff08;键入后才输出&#…

android ftp权限,实战android手机telnet、ftp登陆,权限修改

问题的提出&#xff1a;我用的手机是HTC magic&#xff0c;sd卡用的是金士顿的&#xff0c;不知道什么原因&#xff0c;总是有时能找到sd卡&#xff0c;有时找不到。我个人总有一些数据文件&#xff0c;想固定放在手机的系统上&#xff0c;而不是sd卡上(/sdcard)&#xff0c;那…

Linux nohup和的功效

Linux nohup和&的功效 https://www.cnblogs.com/laoyeye/p/9346330.html 这是我转载的文章&#xff0c;写的很好&#xff0c; nohup Command [ Arg ... ] [ & ] &&#xff1a;进程后台执行 不挂断地运行命令。no hangup的缩写&#xff0c;意即“不挂断” 例如&…