设为首页 收藏本站
查看: 1051|回复: 0

[经验分享] 基于共享存储nfs的kvm动态迁移

[复制链接]

尚未签到

发表于 2015-10-10 09:52:07 | 显示全部楼层 |阅读模式



基于共享存储的动态迁移


[size=1.166em]
本文前面“V2V 迁移方式的分类”小节中介绍过,跟据虚拟机连接存储方式的不同,动态迁移分为基于共享存储的动态迁移和基于本地存储的存储块迁移。本小节实现了目前使用最广泛的基于共享存储的动态迁移。实现这种实时迁移的条件之一就是把虚拟机存储文件存放在公共的存储空间。因此需要设定一个共享存储空间,让源主机和目的主机都能够连接到共享存储空间上的虚拟媒体文件,包括虚拟磁盘、虚拟光盘和虚拟软盘。否则,即使迁移完成以后,也会因为无法连接虚拟设备,导致无法启动迁移后的虚拟机。



设置实验环境


[size=1.166em]
动态迁移实际上是把虚拟机的配置封装在一个文件中,然后通过高速网络,把虚拟机配置和内存运行状态从一台物理机迅速传送到另外一台物理机上,期间虚拟机一直保持运行状态。现有技术条件下,大多虚拟机软件如 VMware、Hyper-V、Xen 进行动态迁移都需要共享存储的支持。典型的共享存储包括 NFS 和 SMB/CIFS 协议的网络文件系统,或者通过 iSCSI 连接到 SAN 网络。选用哪一种网络文件系统,需要根据具体情况而定。本文的实验采用了 NFS 文件系统作为源主机和目的主机之间的共享存储。




Kvm动态迁移环境搭建

主机分为A和B

分别在主机上安装centos 7,其中包含kvm1.5.3 libvirt virt-manager

二者处于一个网段中。其中nfs服务器我们采用A,搭建过程如下

安装相应组件yum -y install nfs-utils rpcbind




图 3. 共享存储的动态迁移实验配置图


DSC0000.jpg


  • 确保网络连接正确,源主机、目的主机和 NFS 服务器之间可以互相访问。

  • 确保源主机和目的主机上的 VMM 运行正常。

  • 设置 NFS 服务器的共享目录。本文的 NFS 服务器也安装了 SLES11 SP1 操作系统。


清单 3. 配置 NFS 服务


修改 /etc/exports 文件,添加
/home/image *(rw,sync,no_root_squash)
rw:可读写的权限;
ro:只读的权限;
no_root_squash:登入到 NFS 主机的用户如果是 ROOT 用户,他就拥有 ROOT 权限,此参数很不安全,建议不要使用。
sync:资料同步写入存储器中。
async:资料会先暂时存放在内存中,不会直接写入硬盘。
  不重起服务起效exportfs -r

重新启动 nfsserver 服务
# service nfsserver restart
Centos 6
  service rpcbind start
  service nfs start


  可能出现的问题
  客户端测试时showmount -e nfs服务器
  root@localhost~:clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
  防火墙配置问题。通过修改/etc/iptables脚本目录,添加1112049nfsrpc服务使用的端口。或者直接关闭防火墙(不建议,除非你的虚拟机就在安全的局域网内或者虚拟机不作为网络服务器使用)。同时,也可以通过图形化界面去配置和编辑防火墙规则(iptables)。这里要注意一下,在CentOS 6.3当中,/etc目录下有多个iptables脚本文件,确保选择IPV4相关脚本(如果使用IPV6,请选择对应脚本修改)。
  关闭防火墙 centos 7
  systemctl firewalld stop


使用 virt-manager 进行动态迁移


[size=1.166em]
virt-manager 是基于 libvirt 的图像化虚拟机管理软件,请注意不同的发行版上 virt-manager 的版本可能不同,图形界面和操作方法也可能不同。本文使用了 SLES11 SP1 发行版上的 virt-manager-0.8.4。

[size=1.166em]
首先在源主机和目的主机上添加共享存储。这里以源主机为例,目的主机做相同的配置。




  • 添加 NFS 存储池到源主机和目的主机的 vit-manager 中。点击 Edit menu->Host Details->Storage tab。

    图 4. 存储池配置图


    DSC0001.jpg



  • 添加一个新的存储池。点击左下角的“+”号,弹出一个新的窗口。输入以下参数:



  • Name:存储池的名字。

  • Type:选择 netfs:Network Exported Directory。因为本文使用了 NFS 作为共享存储协议。

    图 5. 添加共享存储池


    DSC0002.jpg



  • 点击“Forward”后,输入以下参数:



  • Target Path:共享存储在本地的映射目录。本文中这个目录在源主机和目的主机上必须一致。

  • Format:选择存储类型。这里必须是 nfs。

  • Host Name:输入共享存储服务器,也就是 NFS 服务器的 IP 地址或 hostname。

  • Source Path:NFS 服务器上输出的共享目录。

    图 6. 存储池设置


    DSC0003.jpg



  • 点击”Finish”后,共享存储添加成功。此时在物理机上查看 Linux 系统的文件系统列表,可以看到共享存储映射的目录。

[size=1.166em]
源主机上创建基于共享存储的 KVM 虚拟机。




  • 选择共享存储池,点击”New Volume”创建新的存储卷。



  • 输入存储卷参数。本例为虚拟机创建了大小为 10G,格式为 qcow2 的存储卷。

    图 7. 添加存储卷


    DSC0004.jpg



  • 在这个共享存储卷上创建虚拟机。本文创建了一个基于 Window 2008 R2 系统的虚拟机。创建虚拟机的具体步骤见本文前面“创建 KVM 虚拟机“小节。

[size=1.166em]

  注意:在创建好的img上建虚拟机时,有时会出现could not open disk image……Permission denied
  解决步骤:
  将共享目录权限设为chmod 777
  编辑/etc/libvirt/qemu.conf - options "user" and "group", thus qemu is able to access 也就是把相应两行注释去掉
  
  01
  02
  03
  04
  05
  06
07
  08
  09
  10
11
  12
  13
  14
  15
16
  # Some examples of valid values are:
  #
  # user = "qemu" # A user named "qemu"
  # user = "+0" # Super user (uid=0)
  # user = "100" # A user named "100" or a user with uid=100
  #
  user = "root"
  
  # The group for QEMU processes run by the system instance. It can be
  # specified in a similar way to user.
  group = "root"
  
  # Whether libvirt should dynamically change file ownership
  # to match the configured user/group above. Defaults to 1.
  # Set to 0 to disable file ownership changes.
  dynamic_ownership = 0
  然后重起libvirtd    service libvirtd restart
  
  如果还是出现同样问题,那么有可能是selinux策略默认不允许kvm使用nfs文件,(http://bbs.iyunv.com/thread-1919880-1-1.html)所以需要
  1)[size=1.166em]# setenforce 0
  2)[size=1.166em]编辑 [size=1.166em]/etc/selinux/config [size=1.166em]把 [size=1.166em]SELINUX=enforcing [size=1.166em]改为 [size=1.166em]SELINUX=disabled
  3)[size=1.166em]确认 [size=1.166em]/mnt/116.254.191.19.s [size=1.166em]是否存在。请给出[size=1.166em]ls[size=1.166em]输出
  4)[size=1.166em]重试安装



[size=1.166em]
连接远程物理主机上的 VMM。这里以源主机为例,目的主机做相同的配置。




  • 在源主机上打开 virt-manager 应用程序,连接 localhost 本机虚拟机列表。点击 File->Add Connection,弹出添加连接窗口,输入以下各项:



  • Hypervisor:选择 QEMU。

  • Connection:选择连接方式 。本文选择 SSH 连接。

  • Hostname:输入将要连接的主机名或 IP 地址,这里填写目的主机名 victory4。

    图 8. 添加远程 VMM 连接


    DSC0005.jpg



  • 点击 Connect,输入 SSH 连接的密码后,将显示源主机和目的主机上的虚拟机列表。

    图 9. 管理远程 VMM


    DSC0006.jpg

[size=1.166em]
从源主机动态迁移 KVM 虚拟机到目的主机。




  • 在源主机上启动虚拟机 Windwos 2008 R2。



  • 在虚拟机中,开启实时网络服务(用来验证迁移过程中服务的可用性)。



  • 开启远程连接服务 remote access,在其他主机上远程连接此虚拟机。

  • 开启网络实时服务。例如打开浏览器并且播放一个实时网络视频。



  • 准备动态迁移,确保所有的虚拟存储设备此时是共享的,包括 ISO 和 CDROM。



  • 在源主机的 virt-manager 窗口中,右键点击等待迁移的虚拟机,选择“Migrate ”。


    • New host:选择目的主机的 hostname。

    • Address:填入目的主机的 IP 地址。

    • Port and Bandwith:指定连接目的主机的端口和传输带宽,本文中没有设定,使用默认设置。


    图 10. 虚拟机迁移设置


    DSC0007.jpg



  • 点击“Migrate”和“Yes”开始动态迁移虚拟机。

    图 11. 虚拟机迁移进度


    DSC0008.jpg



  • 动态迁移的时间与网络带宽、物理主机的性能和虚拟机的配置相关。本实验中的网络连接基于 100Mbps 的以太网,整个迁移过程大约耗时 150 秒。使用 RDC(Remote Desktop Connection)远程连接虚拟机在迁移过程中没有中断;虚拟机中播放的实时网络视频基本流畅,停顿的时间很短,只有 1 秒左右。如果采用 1000Mbps 的以太网或者光纤网络,迁移时间将会大大减少,而虚拟机服务停顿的时间几乎可以忽略不计。



  • 迁移完成后,目的主机的 VMM 中自动创建了一个同名的 Windows 2008 R2 虚拟机,并且继续提供远程连接服务和播放在线视频。源主机上的虚拟机变为暂停状态,不再提供服务。至此,动态迁移胜利完成。
  

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-124966-1-1.html 上篇帖子: 虚拟化之KVM--RedHat最新虚拟化技术 下篇帖子: kvm创建虚拟pci设备的几个函数(老版本)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表