CentOS7下 libvirt+virt-manager 虚拟机迁移配置及错误处理

在CentOS7+KVM上实现服务器的迁移   

目录

注:本文使用的virt-manager版本为0.8.4.1

1.使用virt-manager管理多台虚拟机...1

2.使用virt-manager进行虚拟机动态迁移...2

3.使用virt-manager进行虚拟机静态迁移...11

4.动态迁移遇到的问题以及解决方案...15

注:本文使用的virt-manager版本为0.8.4

 

1.使用virt-manager管理多台虚拟机

   在一台机器上的virt-manager可以通过add
connection管理其它机器上的虚拟机,一般通过"remote tunnel over ssh"就可以了,前提是建立SSH连接,为了简单起见,最好配置密钥证书认证模式,采用无密码登录。简单配置如下:

$ ssh-keygen -trsa 产生SSH公钥及私钥

$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] #拷贝公钥到需要管理的机器上。

配置好以后命令行输入virt-manager打开管理界面。选择fileà
Add Connecttion..

依次填入文本框中内容如下:

Hypervisor: QEMU/KVM

Method:SSH

Username:root

Hostname:192.168.0.123  (需要被操作的服务器地址)

然后点击connect连接即可,此时就会出现另一台服务器上的虚拟机供操作。

2.使用virt-manager进行虚拟机动态迁移

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

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

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

3.  设置
NFS服务器的共享目录。

NFS服务器安装

# yum install nfs*

# yum install rpcbind-*

NFS服务的配置文件为/etc/exports,这个文件是NFS的主要配置文件,不过系统并没有默认值,所以这个文件不一定会存在,可能要使用vim手动建立,然后在文件里面写入配置内容。

/etc/exports文件内容格式:

<输出目录>

[客户端1选项(访问权限,用户映射,其他)]

[客户端2选项(访问权限,用户映射,其他)]

输出目录:

输出目录是指NFS系统中需要共享给客户机使用的目录。

客户端:

客户端是指网络中可以访问这个NFS输出目录的计算机

客户端常用的指定方式

指定ip地址的主机:192.168.0.200

指定子网中的所有主机:192.168.0.0/24 192.168.0.0/255.255.255.0

指定域名的主机:david.bsmart.cn

指定域中的所有主机:*.bsmart.cn

所有主机:*

选项:

选项用来设置输出目录的访问权限、用户映射等。

NFS主要有3类选项:

访问权限选项

设置输出目录只读:ro

设置输出目录读写:rw

用户映射选项

all_squash:将远程访问的所有普通用户及所属组都映射为匿名用户或用户组(nfsnobody);

no_all_squash:与all_squash取反(默认设置);

root_squash:将root用户及所属组都映射为匿名用户或用户组(默认设置);

no_root_squash:与rootsquash取反;

anonuid=xxx:将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户(UID=xxx);

anongid=xxx:将远程访问的所有用户组都映射为匿名用户组账户,并指定该匿名用户组账户为本地用户组账户(GID=xxx);

其它选项

secure:限制客户端只能从小于1024的tcp/ip端口连接nfs服务器(默认设置);

insecure:允许客户端从大于1024的tcp/ip端口连接服务器;

sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性;

async:将数据先保存在内存缓冲区中,必要时才写入磁盘;

wdelay:检查是否有相关的写操作,如果有则将这些写操作一起执行,这样可以提高效率(默认设置);

no_wdelay:若有写操作则立即执行,应与sync配合使用;

subtree:若输出目录是一个子目录,则nfs服务器将检查其父目录的权限(默认设置);

no_subtree:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率;

/home/image*(rw,sync,no_root_squash)    (这里有多少台服务器就需要给每台服务器配置)

重新启动 nfsserver服务

# service nfsserver restart

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

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

存储池配置图

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

Name:存储池的名字。

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

 

 

 

添加共享存储池

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

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

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

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

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

存储池设置

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

源主机上创建基于共享存储的 KVM虚拟机。

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

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

添加存储卷

在这个共享存储卷上创建虚拟机。本文创建了一个基于 Window 2008 R2系统的虚拟机。

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

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

Hypervisor:选择 QEMU。

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

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

添加远程 VMM 连接

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

管理远程 VMM

从源主机动态迁移 KVM虚拟机到目的主机。

在源主机上启动虚拟机 Windwos2008 R2。

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

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

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

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

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

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

虚拟机迁移设置

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

图 11. 虚拟机迁移进度

3.使用virt-manager进行虚拟机静态迁移

关闭server02上的虚拟机vm02-win2003,然后将虚拟磁盘镜像vm02-win2003se.img文件上传到server01。

  [[email protected] home]# sftp 10.8.0.124

Connecting to 10.8.0.124...

  [email protected]‘s password:

sftp> put vm02-win2003se.img

Uploading wm02-win2003 to/root/vm01-wi2003se.img

vm02-win2003se.img 100% 10G11.1MB/s 15:21

  sftp> exit

  

方法一、图形界面导入磁盘镜像

     在server01上导入vm02-win2003se.img文件,

  整个过程跟创建新VM差不多,与新建不一同的是,这里选择导入从server02上传过来的img镜像。

  

  

  

其他设置的信息同server02上img虚拟机的信息一致

  

  

       单击“Finish”,VMM便自动运行该虚拟机了。

    迁移过程中,server02 vm02-win2003se的静态网络配置在server01vm11-win2003se中变成了动态获取。

  

方法二、使用命令导入磁盘镜像

       在/etc/libvirt/qemu目录下,有与虚拟机相对应的xml配置文件。

   如果使用命令导入磁盘镜像的话,从源主机拷贝镜像文件和
XML 配置文件到目的主机中。也就是说,除了vm02-win2003se.img镜像文件外,还需要将server02 /etc/libvirt/qemu目录下的vm02-win2003se.xml文件也传到server01上,并且放到/etc/libvirt/qemu目录下。然后对
xml 进行适当的修改并激活。

     由于vm02-win2003se.img镜像文件放在/root目录下,故需将vm02-win2003se.xml中source
file的值改为/root/vm02-win2003se.img

  <disk type=‘file‘ device=‘disk‘>

  <driver name=‘qemu‘ type=‘raw‘ cache=‘none‘/>

  <source file=‘/root/ vm02-win2003se.img ‘/>

  <target dev=‘hda‘ bus=‘ide‘/>

 <address type=‘drive‘ controller=‘0‘ bus=‘0‘ unit=‘0‘/>

  </disk>

     激活虚拟机配置文件

    # virsh define /etc/libvirt/vm02-win2003se.xml

     至此,便完成的虚拟机的迁移,server01上有一个名为vm02-win2003se的虚拟机。如何要将此虚拟机改名为vm11-win2003se的话,需在xml文件中的第二行对name时行修改,xml文件和镜像文件也修改也一致比较好。

  启动该虚拟机

  #virsh start vm02-win2003se

4.动态迁移遇到的问题以及解决方案

动态迁移的一些必要条件:

1.关闭防火墙  Iptable –F

2.配置文件/etc/hosts 添加对应的IP和主机名(192.168.0.121 hostname

3关闭 selinux服务

问题1:

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

因为默认情况下hostname是 localhost,我们需要把目标的hostname修改一下,临时的也可以。

#hostname target

问题2:

error: internal error Attempt to migrate guest to the same host00020003-0004-0005-0006-000700080009

这个在mail list中有大牛说是服务器提供商的问题,你可以用#dmidecode -s system-uuid查看一下这个ID,理论上是#virsh sysinfo | grep
uuid及# virsh capabilities | grep uuid,这三个ID是一样的。

修改一下libvirtd的配置文件

#sed -i "/#host_uuid/ahost_uuid = \"`uuidgen`\""/etc/libvirt/libvirtd.conf

重启一下libvirtd服务

# /etc/init.d/libvirtd restart

然后再查看一下

# virsh capabilities | grep uuid

问题3:

error: unable to set user and group to ‘107:107‘ on ‘/image/vmtest/disk.img‘:No such file or directory

如果顺利进入到这步的话,就很简单了,没有directory直接创建一个就可以,没有disk.img
直接create一个

注:创建的磁盘应该和源虚拟机的磁盘是一样的大小(更大应该是可以)和格式(raw还是qcow2)

qemu-img create /image/vmtest/disk.img+sizeG

问题4:

error: Unable to resolve address ‘target‘ service ‘49155‘: Name or service notknown

在/etc/hosts添加解析的ip和target的域名即可

时间: 2024-09-30 09:52:36

CentOS7下 libvirt+virt-manager 虚拟机迁移配置及错误处理的相关文章

CentOS7下安装MySQL5.7安装与配置(YUM)

CentOS7下安装MySQL5.7安装与配置(YUM) 安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ # 下载mysql源安装包shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm# 安装mysql源shell> yum l

CentOS7下MySQL8的二进制基本安装配置

前言 基于本地Centos7.6虚拟机Mysql8的配置 一.安装前的准备 1.到官网下载mysql-8.0.16-linux-glibc2.12-x86_64.tar.xz 2.通过Xshell或者Xftp.PSPC.PSFTP等工具把安装包上传到CentOS服务器. PSftp示范 (1)先在虚拟机上命令(ip addr)查看虚拟机的ip,没有ip自己网上找配置方法 (2)打开psftp,连接虚拟机 open ip (3)账号密码登录(注意:要回复y or n时,要照提示输入,不能直接回车)

CentOS7下SVN server的安装与配置

CentOS7通过yum install命令进行安装SVN(参考:http://subversion.apache.org/packages.html#centos) $ yum install subversion $ yum install mod_dav_svn 安装完成后新建一个用于做仓库的文件夹(/usr/local/svnrepository): 使用svnadmin create命令将刚刚创建的目录设置为svn仓库: svnadmin create /usr/local/svnre

CentOS7下安装MySQL5.7安装与配置(转)

原文地址:http://www.centoscn.com/mysql/2016/0626/7537.html 安装环境:CentOS7 64位 MINI版,安装MySQL5.7 1.配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/  # 下载mysql源安装包 shell> wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarc

centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法

习惯于在/etc/rc.local文件里配置我们需要开机启动的服务,这个在centos6系统下是正常生效的.但是到了centos7系统下,发现/etc/rc.local文件里的开机启动项不执行了!仔细研究/etc/rc.local文件内容,发现问题如下: [[email protected] ~]# cat /etc/rc.local #!/bin/bash # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES # # It is highly advi

centos7下haproxy1.7的使用与配置

haproxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. 一.haproxy下载 http://www.haproxy.org/#down 如:haproxy-1.7.2.tar.gz 二.安装haproxy 查看内核版本 > uname -r 解压haproxy,并安装 > tar xf haproxy-1.7.2.tar.gz > cd haproxy-1.7.2 > make TARGET=linux2628

Centos7下多网卡的路由转发配置

Centos7前的版本用iptable 防火墙设置路由转发 :Centos7 以后的版本不能使用iptable 防火墙来设置路由器转发,而是得用firewall-cmd 来设置 首先输入firewall-cmd --list-all 来查看当前防火墙配置 假设接口 interfaces:eno1 ens1 ens3 三个 先配置外网接口: 然后输入 firewall-cmd --list-all --zone=external 查看外网接口 查看masquerade是否是YES 然后输入fire

CentOS7下安装MySQL5.7安装与配置

介绍在CentOS7上yum安装数据库服务器MySQL Community Server 5.7的方法. 准备 CentOS7默认安装了和MySQL有兼容性的MariaDB数据库,在我们安装MySQL5.7之前为了避免发生冲突首先删除MariaDB. # rpm -qa | grep maria mariadb-libs-5.5.50-1.el7_2.x86_64 # yum remove mariadb-libs -y 添加MySQL的yum源 在CentOS7上yum安装MySQL需使用My

Centos7下lvs负载均衡lvs-tun模式配置

一.架构 director:172.28.18.69 vip:172.28.18.70 real server1:172.28.18.71 real server2:172.28.18.78 二.两台real server上安装nginx 配置nginx yum源 [[email protected] ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/cent