前面一篇文章介绍了利用NFS创建虚拟机的过程,本文就介绍下如何利用NFS对虚拟机进行动态迁移。
动态迁移就是把一台虚拟机在不停止其运行的情况下迁移到另一台物理机上。这看起来似乎不太可能,不过还好kvm本身就支持者一特性,且libvirt也提供了相应的API,我们可以通过virsh命令或者virt-manager对虚拟机进行动态迁移。
进行动态迁移由于不间断虚拟机的运行,所以其所需的条件就必要多:
1、两台虚拟机的虚拟化环境必须一致,libvirt版本、qemu版本。
2、两台物理机必须有着相同的共享目录,即把NFS服务器上的镜像文件夹挂载到相同目录下
3、源主机需要配置DNS,这样LIbvirt才可以找到目的主机,hostname可以自己命名
4、物理主机开启nfs虚拟化支持
5、给qemu设置root权限
 
为了迁移成功,我们先检查下上述条件:
1、
目的主机:
 
源主机:
 
前面两行是在安装vtpm引起的,这里不影响,可以看到这里的虚拟化环境是一致的。
2、NFS共享文件挂载目录
目的主机:
 
源主机:
 
由于不需要安装虚拟机,所以我们就不用挂载ISO目录。可以看到这里镜像文件目录结构是一样的。
 
3、检查目的主机和源主机的域名配置
目的主机域名查看
 
源主机:
 
 
这里注意修改了host文件后注意重启网络服务生效。
 
4、检查selinux中nfs对虚拟化支持的相关选项
目的主机:
 
源主机:
  
5、给qemu设置root权限:
源主机:
在/etc/libvirt/qemu.conf
 
目的主机:
 
注意设置以后要重启libvirtd服务:systemctl restart libvirtd.service
 
6、执行迁移
(1)迁移前虚拟机的标签:
 
 

迁移之后:
 
可以发现其实sVIrt标签已经变化了,即在动态迁移过程后,虚拟机的隔离性依然有效。
 
 
当然在利用NFS迁移的过程中也有一些问题,总结如下:

Question1:

unable to migrate guest: internal error: Attempt to migrate guest to the same host domain

Solution1:

1、在/etc/hosts中添加$(target IP) domain

2、重启网络服务

Question2:

internal error: hostname on destination resolved to localhost, but migration requires an FQDN

solution2

1、在对方运行hostname domain

Question3:

internal error: process exited while connecting to monitor: 2016-09-04T06:11:21.526046Z qemu-kvm: -drive file=/nfsFile/images/ubuntu12.04.qcow2,if=none,id=drive-ide0-0-0,format=qcow2: could not open disk image /nfsFile/images/ubuntu12.04.qcow2: Could not open '/nfsFile/images/ubuntu12.04.qcow2': Permission denied。

Solution3:

1、应该是在对方或者本地没有开启virt_nfs_use

2、运行setsebool virt_nfs_use on

Question4:

问题1和问题2每次执行迁移时都会遇见,不晓得为何!

Solution:

想了许久终于明白,这里需要在source主机添加目的主机的域名,即修改source主机的/etc/hosts文件添加:

源IP targetname

//targetname 为目标主机的hosname,如果不清楚可以在目标主机执///行hostname查看下。

但是默认情况下,hostname是localhost.localdomain,而这个会被libvirt认为是本地,所以会拒绝,那么就只能给目标机器修改一个hostname,然后在源主机上配置DNS解析即可。

至于前面为何出现那种情况,是因为我们如果利用hostname命令修改了hostname,那么/etc/hosts中的设置就失效,那么就需要重启网络服务,而一旦重启,那么下次在使用domain这个域名就会失效,仍然需要利用hostname设置,就这样形成循环。
 

通过virt-manager 利用NFS创建、迁移虚拟机2的更多相关文章

  1. 通过virt-manager 利用NFS创建、迁移虚拟机1

    NFS作为一种网络文件系统,近些年随着云计算的发展也变得越来越受欢迎.因为云环境下会部署大量的虚拟机,而在物理机发生故障的时候,云服务商必须要保障虚拟机的安全性,即不能因为物理机的故障就停止虚拟机.这 ...

  2. 利用Vmware 创建Linux虚拟机的方法

    https://blog.csdn.net/qq_34929457/article/details/52663265 使用VMware新建一个Linux系统虚拟机 原创 2016年09月25日 17: ...

  3. kvm安装window系统及使用NFS动态迁移

    验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...

  4. 平台支持的从经典部署模型到 Azure Resource Manager 的 IaaS 资源迁移

    本文介绍如何才能将基础结构即服务 (IaaS) 资源从经典部署模型迁移到 Resource Manager 部署模型. 用户可以阅读有关 Azure Resource Manager 功能和优点的更多 ...

  5. VMware 接入 Openstack — 使用 Openstack 创建 vCenter 虚拟机

    目录 目录 软件环境 前言 Openstack 接口驱动 使用 KVM 在 Compute Node 上创建虚拟机的流程 使用 VCDirver 在 vCenter 上创建虚拟机的流程 配置 vCen ...

  6. KVM虚拟化管理 virt manager常用操作

    部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...

  7. Centos7利用kvm搭建Windows虚拟机

    这几天玩了一下kvm虚拟化,真的很有意思,我把这几天踩的坑,还有收获,都记录下来,作为以后的复习和检查. 首先说一下我的基本逻辑,我有一台win7的笔记本,我的底层虚拟化是使用VMWare构建的Cen ...

  8. 云计算---记一次黑客攻击openstack创建的虚拟机

    一:问题定位 现象: 近期发现有几台openstack云主机被修改密码并被肉鸡. 黑客操作日志: -- :: ##### root tty1 : #### -- :: top -- :: ##### ...

  9. NFS存储迁移至GlusterFS

    NFS存储迁移至GlusterFS 前提条件 为防止脑裂,建议使用最低3台节点制作3复制集的存储卷: 在进行存储迁移前,GluseterFS存储节点需先成为k8s集群中的node节点: 存储切换时请勿 ...

随机推荐

  1. AndroidStudio添加Android源码

    找了半天没找到,还是用google好啊!修改如下,打开如下的build.gradle,修改compileSdkVersion 为你下载的源码版本号. Open your sdk manager fro ...

  2. DRBD 高可用配置详解(转)

    高可用性集群解释:一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上.还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行.今天来做个Heartbeat ...

  3. 基于Gitolite的Git服务架设

    如果不是要与他人协同开发,git根本不需要架设服务器,git可以直接使用本地版本库的路径完成git版本间的操作.但是如果需要和他人分享版本库,协作开发,就需要能够通过网络协议操作git库.git支持的 ...

  4. google cloud之停止任务

    1.点击侧边栏:ML Engine -> Jobs 2.选择对应的任务,点击stop

  5. Python 矩阵与矩阵以及矩阵与向量的乘法

    import numpy as np numpy模块的array相乘时,有两种方式:一是矩阵形式,二是挨个相乘. 需要用矩阵形式相乘时,则要用np.dot()函数. #矩阵与矩阵相乘a = np.ar ...

  6. IoC就是IoC,不是什么技术,与GoF一样,是一种设计模式。

    IoC就是IoC,不是什么技术,与GoF一样,是一种设计模式. InterfaceDrivenDesign接口驱动,接口驱动有很多好处,可以提供不同灵活的子类实现,增加代码稳定和健壮性等等,但是接口一 ...

  7. php -- strpos,stripos,strrpos,strripos,strstr,strchr,stristr,strrchr

    strpos() 函数 语法: mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) 查找 needle 在 h ...

  8. .NET Entity Framework(EF)使用SqlQuery直接操作SQL查询语句或者执行过程

    Entity Framework是微软出品的高级ORM框架,大多数.NET开发者对这个ORM框架应该不会陌生.本文主要罗列在.NET(ASP.NET/WINFORM)应用程序开发中使用Entity F ...

  9. PHP正则表达式 /i, /s, /x,/u, /U, /A, /D, /S等模式修饰符

    i (PCRE_CASELESS) 如果设置了这个修饰符, 模式中的字母会进行大小写不敏感匹配. m (PCRE_MULTILINE) 默认情况下, PCRE认为目标字符串是由单行字符组成的(然而实际 ...

  10. Spring_day03--课程安排_基于aspectj的注解aop_Spring的jdbcTemplate操作

    Spring_day03 上节内容回顾 今天内容介绍 基于aspectj的注解aop Spring的jdbcTemplate操作 增加 修改 删除 查询 Spring配置c3p0连接池和dao使用jd ...