文档章节

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

刘付kin
 刘付kin
发布于 2016/12/10 19:01
字数 1894
阅读 122
收藏 1
点赞 0
评论 0
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
深圳
转-红帽企业版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 ⋅ 1

QEMU 1: 使用QEMU创建虚拟机

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

宅蓝三木 ⋅ 2014/05/15 ⋅ 21

CentOS 6.5安装KVM虚拟化

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

大相林 ⋅ 2017/01/12 ⋅ 0

ubuntu下安装KVM

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

Oo熊小猫oO ⋅ 2016/03/27 ⋅ 0

在KVM虚拟机中使用spice

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

t_huanghai ⋅ 2015/11/26 ⋅ 0

开源虚拟化 KVM 视频教程在51CTO上线了

  《开源虚拟化KVM极速入门》视频教程,正式在51CTO上线了!   访问地址:http://edu.51cto.com/course/courseid-6815.html   由浅入深、循序渐进地掌握开源虚拟化KVM的体系结构、构建...

dbtrain ⋅ 2016/08/20 ⋅ 0

KVM虚拟机管理程序(转)

眼下有几种不同的方法可以管理在KVM虚拟机管理程序上运行的虚拟机。比如说,virt-manager就是一种广受欢迎的基于图形用户界面(GUI)的前端工具,可用来管理虚拟机。不过,如果你想在无外设服...

jk409 ⋅ 2014/09/25 ⋅ 0

如何为Ubuntu 15.04安装和配置KVM

KVM (Kernel Based Virtual Machine) 是一个免费的虚拟化工具,它与 VMware、Hyper-V 类似,也可以让我们在主机操作系统中创建虚拟机。KVM 在开源界已经被非常广泛地使用,这主要得益于它能够...

Toby_Ligtt ⋅ 2016/03/21 ⋅ 0

qemu-img命令详解

qemu-img是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,本节对其用法和实践使用方法进行介绍。 qe...

庆沉 ⋅ 2015/07/03 ⋅ 0

基于Linux命令行KVM虚拟机的安装配置与基本使用

背景 由于生产环境的服务器并不会安装桌面环境,简单操作的图形化安装也不适合批量部署安装。因此,我还是更倾向于在命令下安装配置KVM虚拟机。结合了一些资料和个人使用的状况,我大致列出了...

PeanutLike ⋅ 2016/07/24 ⋅ 3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 13分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 20分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 24分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 26分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 29分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 33分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 46分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部