文档章节

1、KVM的介绍和使用(命令行版)

刘付kin
 刘付kin
发布于 2016/12/10 19:01
字数 1894
阅读 135
收藏 1
KVM

#介绍

  • Hypervisor:是一种“虚拟机监视器(VMM)”,它介于裸机硬件和操作系统之间的组件,通过它, 可以在物理服务器上安装多个操作系统。

  • VNC:是一个在UNIX和Linux平台上的远程控制开源程序,有:vncserver,vncviewer,vncpasswd, 和 vncconnect。

  • KVM:Linux 2.6X版本中加入的内核模块,分为两个:kvm.ko 和 kvm_intel.ko / kvm_amd.ko

  • QEMU-KVM:KVM是一个可以虚拟CPU和内存的模块,但是不能够虚拟I/O等,所以它借鉴了QEMU,形成了一个QEMU-KVM的工具。利用它,用户可以很方便的操作KVM内核,虚拟出虚拟机、虚拟磁盘等。

  • libvirt:它是基于qemu-kvm、xen、qemu等之上的服务工具,它将这些底层技术的操作进行了封装成了一个配置文件里面,这样可以大大的提高了复用。安装了它之后,会提供一个virsh的命令,很强大:创建、删除、启动、修改、克隆等都可以。

#一:使用最底层的命令(qemu-kvm 和 qemu-img)操作

  • 1、查看cup是否支持虚拟

      grep -E -o 'vmx|svm' --color /proc/cpuinfo
    

    注意:如果想在vmwareWorkstation的虚拟机中使用KVM,

    则需要在设置那里开启VT-X技术,如图:

输入图片说明

  • 2、查看Linux内核是否加载了kvm模块

      lsmod | grep kvm
    
  • 3、加载KVM模块

      modprobe kvm
      modprobe kvm_intel
    
  • 4、安装qemu-kvm,安装完成后会生成/usr/libexec/qemu-kvm,是用户空间操作kvm内核的接口

      yum install qemu-kvm
    
  • 5、通过网络上传ISO镜像文件

      通过CRT的Alt + p 打开ftp客户端上传即可
    
  • 6、生成一个8G的镜像文件,作为虚拟机的磁盘

      qemu-img create  -f  raw  /root/hadoop.img 8G      默认生成raw格式,给多少就一次性划分多少
      qemu-img create  -f  qcow2  /root/hadoop.img 8G           生成qcow2格式,用多少算多少
    
  • 7、使用qemu-kvm创建虚拟机(参数说明 -m 指定内存大小 -smp 指定cup数量 -boot启动顺序)

      /usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -hda /cloud/CentOS.img -cdrom /iso/CentOS-6.6-x86_64-minimal.iso -vnc :1
    
      参数说明:
      	-m 指定客户机内存大小,默认单位MB
      	-smp 指定客户机cpu个数。SMP:(symmetric[sɪ'metrɪk] Multi-processing)对称多处理
      	-boot 指定客户机系统启动顺序,order=cd是指先光盘再硬盘。c:CD-ROM d:Hard Disk
      	-hda 指定客户机的IDE硬盘(即前面的创建的镜像文件)
      	-cdrom 指定客户机的光驱
    
  • 8、安装vnc或使用vnc工具连接虚拟机,给虚拟机安装系统

  • 9、关闭虚拟机并再次启动虚拟机,指定vnc端口为5901(不需要指定cdrom,因为已经将操作系统安装到磁盘中了)

      /usr/libexec/qemu-kvm -m 2048 -smp 1 -boot order=cd -hda /cloud/CentOS.img -vnc :1
    

#二:使用高级命令(virtsh)操作

上述采用最底层的qemu-kvm命令来对虚拟机进行创建和管理,比较困难。除此之外,还可以使用基于qemu-kvm的libvirt 和 virsh 进行操作,而virsh又是基于libvirt的,只要安装libvirt就会提供virsh命令。

他们的关系如下:

输入图片说明

##步骤:

  • 1、同样先判断机器是否支持虚拟化,然后加载内核模块。

  • 2、安装 qemu-kvm 、 libvirt

      yum install qemu-kvm libvirt
    
  • 3、启动libvritd守护进程

      service libvirtd start
    
  • 4、使用virsh有两种方式

    • 直接使用:virsh list --all

    • virsh 【回车】 进入交互界面

      virsh# list --all

  • 5、虚拟机要上网==>brige或者nat,brige需要创建一个网桥,并且把虚拟机的网卡和hypervisor的网卡都关联到这个网桥上。nat不需要创建,因为virsh默认提供了vritbr0

    • iface-bridge eth0 br0 ===>br0是随意定义的

      • iface-bridge命令底层是调用了brctl命令
  • 6、编写配置文件

    其实libvirt它是借助于qemu-kvm的功能,在她的基础之上在进行操作封装。同时,它把虚拟机的参数都记录在一个配置文件中,从而使得,配置文件可以重用。


	<domain type="kvm">
		<!--虚拟机名称-->
		<name>centos-adv</name>
		<!--最大内存,单位mb-->
		<memory unit="MiB">4096</memory>
		<!--可用内存,单位k-->
		<currentMemory unit="MiB">2048</currentMemory>
		<!--虚拟cpu个数-->
		<vcpu>2</vcpu> 

		<os>
			<type arch="x86_64">hvm</type>
			<!-- 硬盘启动 -->
			<boot dev="hd" />
			<!--光盘启动-->
			<boot dev="cdrom" />
		</os>

		<features>
			<acpi />
			<apic />
			<pae />
		</features>

		<clock offset="localtime" />
		<on_poweroff>destroy</on_poweroff>
		<on_reboot>restart</on_reboot>
		<on_crash>destroy</on_crash>

		<devices>
			<!--指定基于那个虚拟化平台,也可以指定为xen-->
			<emulator>/usr/libexec/qemu-kvm</emulator>

			<disk type="file" device="disk">
				<driver name="qemu" type="qcow2" />
				<!--目的镜像>路径,设置为本虚拟化I/O-->
				<source file="/cloud/centos.qcow2" /> 
				<target dev="hda" bus="ide" />
			</disk>

			<disk type="file" device="cdrom">
				<!--光盘镜像路径 -->
				<source file="/cloud/CentOS-6.6-x86_64-minimal.iso" />
				<target dev="hdb" bus="ide" />
			</disk>

			<!--配置第一个网卡,指定他的网络为:NAT(virbr0是libvirtd进程提供的NAT网桥)-->
			<interface type="bridge">
				<mac address='06:64:12:00:00:52'/>	
				<!--当前主机网桥的名称-->
				<source bridge="virbr0" />
				<model type='ide'/>
			</interface>

			<!--配置第二个网卡,指定他的网络为:bridge(br0是利用brctl命令创建的)-->
			<interface type="bridge">
				<!--mac地址不能一样-->
				<mac address='06:64:12:00:00:53'/>	
				<!--当前主机网桥的名称-->
				<source bridge="br0" />
				<model type='ide'/>
			</interface>

			<input type="mouse" bus="ps2" />
			<!--vnc端口号自动分配,可以通过virsh vncdisplay来查询-->
			<graphics type="vnc" port="-1" autoport="yes" listen="0.0.0.0" keymap="en-us" passwd='abcd'/>
		</devices>
	</domain>

#注意问题:

  • 1、由于虚拟机的网卡都绑定到了网桥br0上了,所以hypervisor的公网网卡eth0也需要绑定到这个br0上,否则它上面的虚拟机无法联网。

    brctl addif br0 eth0 && brctl stp br0 on && ifconfig eth0 0.0.0.0 && ifconfig br0 192.168.33.250 netmask 255.255.255.0 && route add default gw 192.168.33.1

  • 2、添加网卡时,可以指定添加到那个网桥:bridge? 还是libvirt提供的 virbr0 (NAT)形式?

  • 3、添加了网卡设备之后,在虚拟机中需要使用ifconfig eth0 up 来启动它

  • 4、查看ifconfig,eth0没有ip地址

    • 1、网卡没有开机启动
    • 2、网卡mac地址冲突
  • 5、解决:

    • 手动指定IP,但是下次启动就没有了。
      • 指定eth0的ip和默认网关

      • ifconfig eth0 192.168.122.100/24

      • route add default gw 192.168.122.1

      • 指定eth1的ip和默认网关

      • ifconfig eth1 192.168.33.100/24

      • route add default gw 192.168.33.1


#上述的配置中,使用的是IDE总线,读写速度很低,可以将磁盘设置成半虚拟化virtio

<disk type="file" device="disk">
	<driver name="qemu" type="qcow2" />
	<source file="/cloud/centos.img" /> 
	<target dev='vda' bus='virtio'/>
</disk>

不仅磁盘可以设置为本虚拟话,网卡也可以设置为半虚拟化virtio
<!--虚拟机网络连接方式-->
<interface type="bridge">
	<mac address='06:64:12:00:00:52'/>	
	<!--当前主机网桥的名称-->
	<source bridge="virbr0" />
	<model type='virtio'/>
</interface>

##virsh命令操作

  • 1、定义虚拟机(指定配置文件,配置文件会被拷贝到libvirt的一个指定文件夹中)

      virsh define /cloud/centos-base.xml
    
  • 2、virsh 进行管理虚拟机

      virsh list --all  # 显示所有虚拟机 --all显示全部 
    
  • 3、启动虚拟机

      virsh start centos
    
  • 4、关闭虚拟机

      virsh shutdown centos
    
  • 5、强制关机

      virsh destroy centos
    
  • 6、移除虚拟机

      virsh undefine centos
    
  • 7、显示vnc端口

      virsh vncdisplay centos
    
  • 8、动态查询kvm使用资源

      top -d 1 | grep kvm
    
  • 9、查询kvm进程

      ps -aux | grep kvm
    
  • 10、开机自动启动虚拟机

      virsh autostart centos
    
  • 11、导出虚拟机centos的硬件配置信息为/cloud/centos.bak.xml

      virsh dumpxml centos > /cloud/centos.bak.xml
    
  • 12、编辑虚拟机配置(配置的是libvirt中的配置文件,而不是我们编写的那个。)

      virsh edit centos
    
  • 13、克隆KVM虚拟机

      virt-clone -o Winxp -n winxpclong -f /home/kvm/winxpclong.img
      (-o  原始客体的名称-n新客户端的名称-f作为新客户端磁盘映像的新文件)
    

© 著作权归作者所有

共有 人打赏支持
刘付kin
粉丝 6
博文 100
码字总数 72832
作品 0
深圳
QEMU 1: 使用QEMU创建虚拟机

QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为...

宅蓝三木
2014/05/15
0
21
转-红帽企业版6.0 KVM虚拟机实战攻略

from: http://www.searchvirtual.com.cn/showcontent46584.htm 在2010年4月发布的RHEL 6.0 Beta版中,去掉了Xen,这也许是第一个不包含Xen Hypervisor的知名Linux发行版。KVM 是指基于 Linu...

玉龙
2011/05/04
0
1
CentOS 6.5安装KVM虚拟化

一、KVM简介 KVM(Kernel-basedVirtual Machine)即基于内核的虚拟机,是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Linux 2.6.20核心...

大相林
06/26
0
0
ubuntu下安装KVM

环境: Ubuntu 14.04 64bit 1, KVM需要CPU硬件支持虚拟化,所以首先要确认你的CPU支持。 Intel CPU的虚拟化技术叫 vmx (Virtual Machine eXtension,就是一串虚拟机指令集) AMD CPU的虚拟化技...

Oo熊小猫oO
2016/03/27
102
0
在KVM虚拟机中使用spice

1.spice介绍 1.1 spice简介 spice是由Qumranet开发的开源网络协议,2008年红帽收购了Qumranet获得了这个协议。SPICE是红帽在虚拟化领域除了KVM的又一“新兴技术”,它提供与虚拟桌面设备的远...

t_huanghai
2015/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

获取多个集合列表的笛卡尔积

获取多个集合笛卡尔积 电商中典型业务场景:商品搜索 单属性属性值之间为并查询 不同属性的属性值之间查询为与查询 import java.util.ArrayList;import java.util.List;/** * Created w...

键走偏锋
24分钟前
0
0
echarts 迁移地图 控制鼠标缩放大小比例

在网上找了好久没有找到解决方式,还是重新看了一下文档,终于找到的解决方案, zoom:1, //默认显示级别 scaleLimit:{min:1,max:3}, // 缩放级别 echarts 文档-配置项链接 http://echarts.b...

心驰
27分钟前
0
0
Boot2Docker ISO is out-of-date,

Boot2Docker ISO is out-of-date, downloading the latest release. 使用docker-machine时无法更新Boot2Docker ISO导致创建vm machine失败 解决方法:关闭网络,创建好之后再开启...

writeademo
35分钟前
0
0
在 Tomcat 中设置 Tapestry 框架的 html 热加载

如果开发中使用到了 Tapestry 这个框架,如果事先没有设置过的话,开发的时候 html 是不会热加载的,也就是说修改了 html 文件,不能刷新浏览器后立马看到修改完的效果,必须先重新启动应用服...

LeoXu
57分钟前
0
0
【微服务】开启巨石应用到微服务的探索

背景 在过去的一年时间里,我一直在从事一件事情,将现有的单体应用(巨石应用)向微服务改造。 接下来,将持续整理一些在微服务路上的学习与成长。 为什么要做微服务 单体应用,开发、部署简...

艳沐石
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部