Linux KVM虚拟机PVE使用指南

  • 格式:doc
  • 大小:2.68 MB
  • 文档页数:20

Linux KVM虚拟机PVE使用指南1引言KVM (全称是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案,包含一个可加载的内核模块 kvm.ko 提供和虚拟化核心架构和处理器规范模块。

使用 KVM 可允许多个包括 Linux 和 Windows 每个虚拟机有私有的硬件,包括网卡、磁盘以及图形适配卡等PVE使用图形化安装方式,支持裸机安装,管理界面是WEB方式,易于操作,浏览器(fireox,chrome等)支持JAVA即可以进行guest OS的图形管理,无须安装客户端,方便快捷。

本文将详细介绍PVE的安装,使用,部署优化等各方面的内容。

2KVM/QEMU体系架构2.1总体架构QEMU作为一个开源的硬件模拟器项目,除了支持x86体系架构之外,还支持ARM、MIPS、PowerPC、IA64等多种硬件架构。

QEMU采用模块化设计的方法,因此,还能支持多种多样的外设硬件,并且能够方便地进行扩充。

除了支持KVM之外,QEMU还支持全模拟化和kqemu加速模块等方式,这三种方式的架构区别如图5-6所示。

第一种模式是通过kqemu模块实现内核态的加速。

通过在内核中加入kqemu 的相关模块,在用户态的QEMU则通过访问/dev/kqemu设备文件接口调用改进型加速。

在这种模式中,主要针对虚拟机和宿主机运行于统一架构的情况下进行虚拟化。

第二种模式是在用户态直接运行QEMU,由QEMU对目标机的所有指令进行翻译后执行,相当于全虚拟化。

在这种模式下,可以运行各种不同形态的体系结构,如Android开发环境中即使用了QEMU来为其模拟ARM运行环境,但是在这种模拟环境下,每一条目标机的执行指令都需要耗费少则数个,多则成千上万个宿主机的指令周期来模拟实现,速度方面不太理想。

第三种模式则是KVM官方提供的kvm-qemu加速模式。

运行在内核态的KVM 模块通过/dev/kvm字符设备文件向外提供操作接口。

KVM通过提供libkvm这个操作库,将/dev/kvm这一层面的ioctl类型的API转化成为通常意义上的函数API调用,提供给qemu的相应适配层,通过qemu的支持来完成整个虚拟化工作。

针对这三种不同运行模式的测试结果表明,通过KVM对QEMU进行加速从而获取的性能最为理想。

2.2Libvirt在很多开源版本的qemu-kvm实现中,并不仅仅提供qemu-kvm软件来进行管理,而引入了一个叫做libvirt的库和virt-manager进行管理。

libvirt和virt-managater都是开源的多虚拟化产品解决方案,能够支持qemu、Xen、KVM等解决方案在内的多种虚拟机。

在Cent OS等发行版本中,通过使用libvirt和virt-manager来进行虚拟机管理,libvirt通过引入软件适配层的概念,通过统一的上层接口管理虚拟机,对下则提供针对不同解决方案的适配器,如QEMU、Xen和KVM等。

virt-manager是一个基于Python和pygtk编写的虚拟机管理工具前端,通过引用libvirt来进行桌面环境下的虚拟机管理。

而PVE是在libvirt接口的基础上实现了整个虚拟环境的WEB化管理。

3安装与使用KVM虚拟化需要CPU的支持,只有具体该功能的CPU,才能使用KVM虚拟化方案。

3.1前提条件1确定机器有VT终端输入命令: grep vmx /proc/cpuinfo (INTEL芯片)grep svm /proc/cpuinfo (AMD芯片)不知道芯片的生产厂商则输入:egrep '(vmx|svm)' /proc/cpuinfo如果flags: 里有vmx 或者svm就说明支持VT;如果没有任何的输出,说明你的cpu不支持,将无法成功安装KVM虚拟机。

2 确保BIOS里开启VT:Intel(R) Virtualization Tech [Enabled]如有必要,还需在BIOS中开启VT-d3.2安装安装非常简单,一步一步设置下去就好,具体过程如下:输入回车开始,然后出现下图,选择同意即可。

安装程序会自动探测到硬盘,如有多个硬盘,请选择要安装的硬盘然后下一步,选择图家和时区,如下图所设置:设置root用户的密码和邮箱,如下图所示:配置系统的网络,根据实际情况进行设置,如下图所示:下一步开始安装,如下图:安装完成后如下图所示:重启机器,拿出光盘。

系统正常启动后显示如下:3.3基本操作在浏览器中输入真实的IP ,如https://192.168.1.136:8006/即可进行操作管理语言选择chinese, 用户名为root,密码为刚才安装时设置的密码,然后登录。

3.3.1镜像管理镜像管理是指对虚拟硬盘镜像和光盘镜像进行管理,最实用的是可以直接上传光盘镜像,这样在虚拟设置中才可以使用。

local设备的内容菜单中进行相应操作,此处只能上传光盘镜像。

光盘镜像的存储位置在/var/lib/vz/template/iso下虚拟磁盘镜像的存储位置在/var/lib/vz/images下,虚拟机从100开始编号,虚拟磁盘镜像的命名一般是vm-虚拟机编号-disk-硬盘顺序号.镜像格式,如vm-100-disk-1.raw。

3.3.2创建虚拟机在屏幕的右上方有创建VM按钮,可以创建KVM虚拟机,如下图所示:创建步骤如下:第一步输入名称PVE会自动生成VMID从100开始,以后硬盘,虚拟机进程都会使用此ID,输入的名称不能包含空格下划线等特殊字符,否则会提示无效的DNS。

第二步选择OS第二步选择光驱可以根据情况进行选择,一般第一次安装时都会用光盘镜像来安装,所在要先上传才能使用。

第四步选择硬盘硬盘有多中接口可供选择,一般选择IDE,想性能好的可以选择VirtIO,详见后续介绍。

第五步设置CPU数量可以根据需要来设置CPU数理,桌面系统一般设置成2核心即可,服务器应用可以设置成4核心或两个CPU.第六步设置内存根据需要进行设置,桌面系统可以选择2-4G,32位windows一般只能识别3G 再多无用。

第七步设置网络简单点就缺省设置,追求性能就选择VirtIO,后文有介绍。

最后一步进行确认点击完成,开始创建虚拟机,完成后如下图的信息会显示。

3.3.3虚拟机控制(启动,停止,控制台)虚拟机的控制主要有启动,停止,打开控制台等,有两种方法来进行上述操作。

一种是在菜单中选择虚拟机,在屏幕的右上方有相应的按钮,如下图:第二种就是选中虚拟机,右键弹出菜单进行操作,如下图:控制台操作会弹出一新的浏览器窗口,同时会启用JAVA Applet来展现系统,需要浏览器开启JAVA功能。

这样虚拟机就可以在控制台中进行远程控制了,关掉控制台对虚拟机系统不受影响。

需要注意的是PVE中的停止操作,是一个安全的动作,即PVE发送shutdown 命令给Guest OS,由GuestOS来完成真正的关机。

但有时候GuestOS并没有响应发面的shutdown操作,如系统很忙,这时就会出现关不了机,我们在现实生活中我们遇到这种情况,一般会长按Power键来强行关闭电源,实际上这种操作是不安全的,有可能我们需要保存的文档并没有真正写到硬盘当中,所以第二次开机的时候,一般会进行开机自检来修复。

PVE也是这样的,需要强行关机时,就可能通过kill 进程来操作了。

方法如下:1.以root用户登录到系统当中,使用ps -ef |grep kvm命令,找到虚拟机进程。

2.根据VMID找到进程号,用-9 杀死进程,如kill -9 4162.3.4虚拟机管理3.4.1概要浏览显示出当前虚拟的状态和运行情况,方便进行故障诊断,如下图所示:系统有无运行(runing),内存使用,运行时间等内存和网络使用情况:磁盘IO情况:3.4.2硬件管理硬盘参数可以根据需要进行调整,可以点击编辑按钮或者直接双击:同时根据需要可以添硬盘,光驱和网卡设备,如下图:3.4.3选项管理选项管理用来调整一些虚拟机的参数,主要如下:其中最有用的的一个参数就是引导顺序,双击弹出下图进行调整:注意凡是有更改了硬盘的接口类型等操作都需要重新设置一下引导顺序,要不然会出现找不到硬盘的情况。

4VirtIO优化Virtio 是半虚拟化 hypervisor 中位于设备之上的抽象层。

virtio 由Rusty Russell 开发,他当时的目的是支持自己的虚拟化解决方案 lguest。

Virtio 是对半虚拟化 hypervisor 中的一组通用模拟设备的抽象。

该设置还允许 hypervisor 导出一组通用的模拟设备,并通过一个通用的应用编程接口(API)让它们变得可用。

下图展示了为什么这很重要。

有了半虚拟化 hypervisor 之后,来宾操作系统能够实现一组通用的接口,在一组后端驱动程序之后采用特定的设备模拟。

后端驱动程序不需要是通用的,因为它们只实现前端所需的行为。

除了前端驱动程序(在来宾操作系统中实现)和后端驱动程序(在 hypervisor 中实现)之外,virtio 还定义了两个层来支持来宾操作系统到 hypervisor 的通信。

在顶级(称为 virtio)的是虚拟队列接口,它在概念上将前端驱动程序附加到后端驱动程序。

驱动程序可以使用 0 个或多个队列,具体数量取决于需求。

例如,virtio 网络驱动程序使用两个虚拟队列(一个用于接收,另一个用于发送),而 virtio 块驱动程序仅使用一个虚拟队列。

虚拟队列实际上被实现为跨越来宾操作系统和 hypervisor 的衔接点。

但这可以通过任意方式实现,前提是来宾操作系统和 hypervisor 以相同的方式实现它。

总之 VirtIO可以提高GuestOS的性能,主要是网络性能和硬盘性能。

所在在新建虚拟机时最好选择VirtIO类型的设备,如选择网卡类型时,可以选择VirtIO网卡,可以实现千兆网卡的性能,而默认的RTL8139只是个百兆级的网卡。

选择硬盘时可以选择VirtIO接口的硬盘同样可以提高性能。

最新的版本的Linux发行版(内核版本大于2.6.22)中都已支持VirtIO接口,只要设备选择的是VirtIO接口,系统会自动识别安装,不需要再单独安装驱动。

而默认的windows xp、windows7的驱动不包含virtio驱动,需要手工安装。

网卡驱动的安装方法很简单,,按系统提示安装即可完成。

而硬盘驱动在安装时系统时就需要加载会相对麻烦一些,下面总结两种方法:1. 使用IDE方式来安装系统,安装系统完成后,在guest中安装virtio 磁盘驱动,然后再修改kvm启动参数,设置磁盘为virtio。