热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

KVM虚拟机的创建、迁移等管理方法

kvm虚拟机管理一、环境rolehostnameipOSkvm_servertarget192.168.32.40/24rhel6.0_x64vir_guest1node4192.168.32.34/24rhel5.5_i386vir_guest2node5192.168.32.35/24rhel5.5_i386man

kvm虚拟机管理

一、环境

role         hostname    ip                  OS

kvm_server   target      192.168.32.40/24    rhel6.0_x64

vir_guest1   node4       192.168.32.34/24    rhel5.5_i386

vir_guest2   node5       192.168.32.35/24    rhel5.5_i386

manager      manager     192.168.32.33/24    rhel5.5_i386

ESXi         ESXi        192.168.2.251/24    ESXi 3.5

二、安?kvm

[root@target ~]# yum install -y qemu-kvm.x86_64 qemu-kvm-tools.x86_64  #安装kvm内核

[root@target ~]# yum install libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 #安装virt管理工具

[root@target ~]# modprobe kvm         #加载kvm内核

[root@target ~]# modprobe kvm-intel   #intel cpu加载kvm-intel内核,要支持全虚拟化,必须开启;要求cpu支持,通过bios可设置。

[root@target ~]# modprobe kvm-amd     #amd cpu加载kvm-intel

[root@target ~]# modprobe -ls | grep kvm   #查看内核是否开启

kernel/arch/x86/kvm/kvm.ko

kernel/arch/x86/kvm/kvm-intel.ko

kernel/arch/x86/kvm/kvm-amd.ko

[root@target ~]# modprobe -ls | grep kvm-intel

kernel/arch/x86/kvm/kvm-intel.ko

三、安装guest虚拟机

1、直接通过virt-manager安装、管理虚拟机(略)

2、通过命令行安装guest虚拟机

[root@target ~]# yum install virt-viewer   #开启图形控制台安装虚拟客户机需要,

[root@target ~]# virt-install \            #安装选项可用virt-install --help查看

--name node4 \           #虚拟机名

--ram=1024 \             #分配内存大小,MB

--arch=x86_64 \          #模拟的CPU 构架

--vcpus=1 \              #配置虚拟机的vcpu 数目

--check-cpu \            #检查确定vcpu是否超过物理 CPU数目,如果超过则发出警告。

--os-type=linux \        #要安装的操作系统类型,例如:'linux'、'unix'、'windows'

--os-variant=rhel5 \     #操作系统版本,如:'fedora6', 'rhel5', 'solaris10', 'win2k'

--disk path=/virhost/node7.img,device=disk,bus=virtio,size=20,sparse=true \   #虚拟机所用磁盘或镜像文件,size大小G

--bridge=br0 \           #指定网络,采用透明网桥

--noautoconsole \        #不自动开启控制台

--pxe                    #网络安装

四、利用virsh对虚拟机管理

1、开关机

[root@target ~]# virsh start node4      #开机

[root@target ~]# virsh create /etc/libvirt/qemu/node4.xml #直接通过主机配置文档启动主机

[root@target ~]# virsh shutdown node4   #关机

[root@target ~]# virsh destroy node4    #强制关闭电源

[root@target ~]# virsh list --all       #查看虚拟机状态         

 Id 名称               状态

----------------------------------

 18 node4                running

  - node5                关闭

  - win8                 关闭

2、添加删除虚拟机

[root@target ~]# virsh define /etc/libvirt/qemu/node5.xml   #根据主机配置文档添加虚拟机

[root@target ~]# virsh list --all        #node5已经添加

 Id 名称               状态

----------------------------------

 18 node4                running

  - node5                关闭

  - win8                 关闭

 

[root@target ~]# virsh undefine node5     #移除虚拟机

[root@target ~]# ls /etc/libvirt/qemu

networks  node4.xml  win8.xml

[root@target ~]# virsh list --all         #node5已经被移除

 Id 名称               状态

----------------------------------

 18 node4                running

  - win8                 关闭

3、远程管理虚拟机(qemu+ssh连接)

[root@target ~]# yum install virt-viewer

[root@target ~]# export DISPLAY=192.168.40.18:0.0

[root@target ~]# virt-viewer -c qemu///system node4                          #本地管理虚拟机,system:获取system权限,注意qemu后是三个/

[root@manager ~]# virt-viewer -c qemu+ssh://root@192.168.32.40/system node4  #远程linux通过virt-viewer+ssh管理虚拟机

Xlib:  extension "RANDR" missing on display "192.168.40.18:0.0".

root@192.168.32.40's password:

root@192.168.32.40's password:

#会弹出virt-viwer的gtk管理界面

4、使用已存在的虚拟机配置文档安?新的虚拟机

[root@target ~]# qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G

#为新建虚拟机生产磁盘镜像文件

[root@target ~]# virsh list

 Id 名称               状态

----------------------------------

 18 node4                running

[root@target ~]# virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml

#导出虚拟机node6的硬件配置信息为/etc/libvirt/qemu/node6.xml

[root@target ~]# vim /etc/libvirt/qemu/node6.xml 

   #修改node6的id号

  node6           #虚拟机node6的name

  4b7e91eb-6521-c2c6-cc64-c1ba72707fc7  #uuid必须修改,否则会和node4的冲突

  524288

  524288

  1

 

    hvm

   

 

 

   

   

   

 

 

  destroy

  restart

  restart

 

    /usr/libexec/qemu-kvm

   

     

              #指定新虚拟机的硬盘文件

     

   

   

     

     

     

     

   

   

     

     

     

     

   

   

     

     

   

   

     

     

   

   

   

 

[root@target ~]# virsh define /etc/libvirt/qemu/node6.xml

#使用虚拟描述文档建立虚拟机,可用virsh edit node6修改node6的配置文件

[root@target ~]# virsh start node6

#启动虚拟机

5 为虚拟机开启vnc

[root@target ~]# virsh edit node4     #编辑node4的配置文件;不建议直接通过vim node4.xml修改。

   #port='-1' :port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1'),无密码

改为

   #固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络

2. 远程vnc访问地址:192.168.32.40:5904

五、存储池和存储卷的管理

1.创建 KVM主机存储池

1).创建基于文件夹(目录)的存储池

[root@target virhost]# virsh pool-define-as vmware_pool --type dir --target /virhost/vmware

#定义存储池vmware_pool

[root@target virhost]# virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware    

#创建存储池vmware_pool,类型为文件目录,/virhost/vmware,与pool-define-as结果一样

2).创建基于文件系统的存储池

[root@target virhost]#virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

[root@target virhost]#virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

3).查看存储池信息

[root@target virhost]# virsh pool-info vmware_pool  #查看存储域(池)信息

名称:       vmware_pool

UUID:           2e9ff708-241f-fd7b-3b57-25df273a55db

状态:       running

Persistent:     no

自动启动: no

容量:       98.40 GB

分配:       18.39 GB

可用:       80.01 GB

4).启动存储池

[root@target virhost]# virsh pool-start vmware_pool   #启动存储池

[root@target virhost]# virsh pool-list

名称               状态     自动开始

-----------------------------------------

default              活动     yes      

virhost              活动     yes      

vmware_pool          活动     no

5)销毁存储域,取消存储池

[root@target virhost]# virsh pool-destroy vmware_pool  #销毁存储池

[root@target virhost]# virsh pool-list --all

名称               状态     自动开始

-----------------------------------------

default              活动     yes      

virhost              活动     yes      

vmware_pool          不活跃  no         

[root@target virhost]# virsh pool-undefine vmware_pool  #取消存储池的定义

[root@target virhost]# virsh pool-list --all          

名称               状态     自动开始

-----------------------------------------

default              活动     yes      

virhost              活动     yes 

2.创建了存储池后,就可以创建一个卷,这个卷是用来做虚拟机的硬盘

[root@target virhost]# virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2

#创建卷 node6.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2

[root@target virhost]# virsh vol-info /virhost/vmware/node6.img  #查看卷信息

名称:       node6.img

类型:       文件

容量:       10.00 GB

分配:       136.00 KB

3.在存储卷上安装虚拟主机

[root@target virhost]#virt-install --connect qemu:///system \

-n node7 \

-r 512 \

-f /virhost/vmware/node7.img \

--vnc \

--os-type=linux \

--os-variant=rhel6  \

--vcpus=1 \

--network bridge=br0 \

-c /mnt/rhel-server-6.0-x86_64-dvd.iso

六、虚拟机的迁移(vmware 2 kvm)

1.安装软件

[root@target ~]# yum install -y virt-v2v.x86_64

[root@target ~]# rpm -ivh libguestfs-winsupport-1.0-7.el6.x86_64.rpm  virtio-win-1.2.0-1.el6.noarch.rpm 

#虚拟机为windows时需要libguestfs-winsupport 包来支持 NTFS 文件系统和 virtio-win 包来支持 Windows para-virtualized 存储和网络设备驱动

2.创建 KVM 主机存储域(略)

virt-v2v 在迁移虚拟机的过程中,需要拷贝被迁移虚拟机到 KVM 主机预先定义的存储池中。

3.创建 KVM 主机网络接口(略)

虚拟机在迁移之后将连接 KVM 主机网络, 因此主机必须有一个与之相匹配的网络接口,比如说网桥。

4.在 KVM 主机上创建或修改 $HOME/.netrc 文件,添加 VMware ESXi 服务器的用户名和密码。

[root@target ~]# cat ~/.netrc

machine 192.168.2.251 login root password xxxxxx

[root@target ~]# chmod 0600 ~/.netrc

5.Vmware ESXi到KVM的迁移

[root@target ~]# virt-v2v -ic esx://192.168.2.251/?no_verify=1 -op virhost -b br0 ipserver  

** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak:storage1 ==> 401 Unauthorized

** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak:storage1 ==> 200 OK

** GET https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak:storage1 ==> 200 OK (2084s)

unknown filesystem /dev/hda

unknown filesystem /dev/fd0

virt-v2v: Installation failed because the following files referenced in the configuration file are required, but missing: rhel/4/kernel-smp-2.6.9-89.EL.i686.rpm

virt-v2v: 非 virtio 驱动程序配置的 tserver21

#所有选项可通过配置文件/etc/virt-v2v.conf来指定

#-op:指定用于转换后的存储域(pool),virhost

#-b:指定网络为网桥br0

#-ic:指定要转换的源地址

[root@target kvm_node]# virsh list --all

 Id 名称               状态

----------------------------------

  1 node4                running

  - node5                关闭

  - tserver21            关闭

  - win8                 关闭

[root@target kvm_node]# virsh start tserver21

6.KVM到KVM迁移

[root@target kvm_node]# virt-v2v -ic qemu+ssh://192.168.32.179/system -op virhost -b br0 node6

root@192.168.32.179's password:

root@192.168.32.179's password:

unknown filesystem label SWAP-vda3

virt-v2v: The connected hypervisor does not support a machine type of rhel5.4.0. It will be set to the current default.

virt-v2v: virtio 驱动程序配置的 node6

[root@target kvm_node]# virsh list --all

 Id 名称               状态

----------------------------------

  1 node4                running

  - node5                关闭

  - node6                关闭

  - tserver21            关闭

  - win8                 关闭

[root@target kvm_node]# virsh start node6


推荐阅读
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文详细介绍了在Centos7上部署安装zabbix5.0的步骤和注意事项,包括准备工作、获取所需的yum源、关闭防火墙和SELINUX等。提供了一步一步的操作指南,帮助读者顺利完成安装过程。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 原理:dismiss再弹出,把dialog设为全局对象。if(dialog!null&&dialog.isShowing()&&!(Activity.)isFinishing()) ... [详细]
  •     这里使用自己编译的hadoop-2.7.0版本部署在windows上,记得几年前,部署hadoop需要借助于cygwin,还需要开启ssh服务,最近发现,原来不需要借助cy ... [详细]
  • Django + Ansible 主机管理(有源码)
    本文给大家介绍如何利用DjangoAnsible进行Web项目管理。Django介绍一个可以使Web开发工作愉快并且高效的Web开发框架,能够以最小的代价构建和维护高 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
白云朵朵12
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有