`

(转)KVM虚拟机的创建、管理与迁移 操作

 
阅读更多

转自:

http://www.2cto.com/os/201203/123128.html

 

 

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-viwergtk管理界面

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 
<domain type='kvm' id='20'>    #
修改node6id
  <name>node6</name>           #
虚拟机node6name
  <uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fc7</uuid>  #uuid
必须修改,否则会和node4的冲突
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>
  <vcpu>1</vcpu>
  <os>
    <type arch='x86_64' machine='rhel5.4.0'>hvm</type>
    <boot dev='network'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset='utc'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/virhost/node4.img'/>         #
指定新虚拟机的硬盘文件
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='bridge'>
      <mac address='54:52:00:69:d5:c7'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
    </interface>
    <interface type='bridge'>
      <mac address='54:52:00:69:d5:d7'/>
      <source bridge='br0'/>
      <target dev='vnet1'/>
      <model type='virtio'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/4'/>
      <target port='0'/>
    </serial>
    <console type='pty' tty='/dev/pts/4'>
      <source path='/dev/pts/4'/>
      <target port='0'/>
    </console>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='5900' autoport='yes' keymap='en-us'/>
  </devices>
</domain>

[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修改。
<graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
   #port='-1' autoport='yes'
port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1',无密码
改为
<graphics type='vnc' port='5904' autoport='no' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
   #
固定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 ESXiKVM的迁移
[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%3Astorage1 ==> 401 Unauthorized
** HEAD https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 200 OK
** GET https://192.168.2.251/folder/tserver21/RHEL4.6-flat.vmdk?dcPath=ha-datacenter&dsName=ESX35-bak%3Astorage1 ==> 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.KVMKVM迁移
[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


本文来自于 netsword BLOG

 

分享到:
评论

相关推荐

    KVM虚拟机迁移原理分析.pdf

    KVM虚拟机迁移是虚拟化技术中的一项重要功能,它允许在不影响虚拟机运行的情况下,将其从一个物理主机迁移到另一个物理主机上。这一过程对于维护服务器的高可用性、负载均衡以及升级硬件等应用场景非常有用。KVM...

    KVM虚拟机实现在线热迁移的方法步骤(图文)

    一、KVM虚拟机的迁移方式及需要注意的问题 KVM虚拟机的迁移有两种方法: 1、静态迁移(冷迁移):对于冷迁移,就是在虚拟机关闭状态下,将虚拟机的磁盘文件及.xml配置文件(这两个文件组成了一个虚拟机)复制到要...

    KVM 虚拟机在物理主机之间迁移的实现

    KVM虚拟机迁移是指将正在运行或已暂停的虚拟机从一台物理主机移动到另一台物理主机上运行的过程。这一过程可以在不同的应用环境下实现,例如从一台运行着SUSE Linux Enterprise Edition 11 SP1的物理主机迁移到另一...

    使用libvirt管理kvm虚拟机.txt

    ### 使用libvirt管理KVM虚拟机 #### 一、引言 随着云计算和虚拟化技术的发展,越来越多的企业和个人用户选择使用虚拟化技术来提高资源利用率并简化管理流程。其中,KVM(Kernel-based Virtual Machine)作为Linux...

    KVM虚拟机创建功能详细讲解.doc

    KVM虚拟机创建功能详细讲解 本文档详细讲解了KVM虚拟机的创建功能,包括使用KVM自带命令行工具、virsh命令行工具和virt-manager图形界面工具三种方式创建虚拟机的方法。这些方法底层实现的原理都是一样的,都是通过...

    KVM虚拟机管理(使用virt-manager和virsh)

    KVM虚拟机管理(使用virt-manager和virsh) 本文将详细介绍KVM虚拟机管理,包括Libvirt管理架构、使用virt-manager管理虚拟机和使用virsh管理虚拟机。 一、Libvirt管理架构 Libvirt是一个开源的虚拟机管理工具和...

    kvm虚拟机安装,迁移,克隆

    通过自己手动操作一步步实现了如何在centos7主机上安装KVM虚拟机的完整过程,以及如何静态迁移虚拟机,克隆虚拟机以及KVM常用命令

    用命令行管理KVM虚拟机 图文演示

    本文将通过“用命令行管理KVM虚拟机”的主题,深入探讨如何利用virsh、qemu-img、qemu-kvm等工具进行高效的KVM管理。 一、virsh/qemu-img命令 virsh是KVM的主要管理工具,提供了一套全面的命令行接口来控制虚拟机...

    KVM虚拟机的应用

    ### KVM虚拟机的应用与管理 #### 一、KVM虚拟化技术简介 KVM(Kernel-based Virtual Machine)是一种开源的全虚拟化解决方案,它直接集成在Linux内核中,能够将Linux系统转换为一个虚拟机监控器,允许在宿主机上...

    pve_kvm_虚拟机迁移_HA.docx

    【Proxmox VE KVM 虚拟机迁移与高可用性详解】 Proxmox VE 是一款基于 QEMU/KVM 和 LXC 技术的开源服务器虚拟化管理平台,为用户提供了一个集成的、用户友好的 Web 界面和命令行接口(CLI),用于管理虚拟机、容器...

    KVM虚拟机热迁移算法分析及优化1

    通过上述的分析和优化,本文旨在提供一套更高效、更稳定的KVM虚拟机热迁移解决方案,以满足云计算环境下的动态资源管理和业务连续性需求。同时,这些研究结果也为后续的虚拟化技术研究提供了理论基础和技术参考。

    KVM virsh命令管理虚拟机

    在这个环境中,virsh是用于管理KVM虚拟机的命令行工具,提供了丰富的功能,包括创建、启动、迁移以及管理虚拟机。下面我们将详细探讨这些知识点。 **一、创建虚拟机** 创建虚拟机的过程涉及到几个关键步骤: 1. ...

    KVM虚拟机的创建、管理与迁移介绍

    KVM虚拟机迁移技术是服务器虚拟化中的一种重要技术,它使得在不停机的情况下将运行中的虚拟机及其相关数据从一个物理主机迁移到另一个物理主机成为可能,极大地提高了虚拟化环境的灵活性和可用性。开源虚拟机如KVM和...

    使用ovftool导出ESXI虚拟机迁移到OpenStack KVM平台

    VMware ESXi和OpenStack KVM都是流行的虚拟化平台,但有时由于各种原因,如资源优化、成本效益或技术需求,需要在两者之间进行虚拟机迁移。本篇文章将详细阐述如何使用OVF Tool导出VMware ESXi虚拟机并将其迁移到...

Global site tag (gtag.js) - Google Analytics