linux kvm(kvm设备)
大家好,今天小编来为大家解答以下的问题,关于linux kvm,kvm设备这个很多人还不知道,现在让我们一起来看看吧!
Linux折腾记二十虚拟机体验之KVM篇
在上一篇中,我展示了虚拟机软件QEMU的使用、效果及其性能,同时也分析了不同用户对虚拟机的不同追求。但是不管是桌面用户还是企业级用户,对虚拟机软件的追求有一点是共同的,那就是性能。QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统。QEMU的运行模式如下图:
很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要。模拟出的硬件的性能和物理硬件的性能相比,必然会大打折扣。为了提高虚拟机软件的性能,开发者们各显神通。其中,最常用的办法就是在主操作系统中通过内核模块开一个洞,通过这个洞将虚拟机中的操作直接映射到物理硬件上,从而提高虚拟机中运行的操作系统的性能。如下图:
其中KVM就是这种加速模式的典型代表。在社区中,大家常把KVM和Xen相提并论,但是它们其实完全不一样。从上图可以看出,使用内核模块加速这种模式,主操作系统仍然占主导地位,内核模块只是在主操作系统中开一个洞,用来连接虚拟机和物理硬件,给虚拟机加速,但是虚拟机中的客户操作系统仍然受到很大的限制。这种模式比较适合桌面用户使用,主操作系统仍然是他们的主战场,不管是办公还是打游戏,都通过主操作系统完成,客户操作系统只是按需使用。至于Xen,则完全使用不同的理念,比较适合企业级用户使用,桌面用户就不要轻易去碰了,具体内容下一篇我再讲。
其实VirtualBox也是采取的这种内核模块加速的模式。我之所以这么说,是因为在安装VirtualBox时,它会要求安装DKMS。如下图:
熟悉Linux的人知道,DKMS就是为了方便用户管理内核模块而存在的,不熟悉DKMS的人Google一下也可以了解个大概。关于VirtualBox的具体使用方面的内容,我下一篇再讲。这一篇主要讲KVM。
KVM和QEMU是相辅相成的,QEMU可以使用KVM内核模块加速,而KVM需要使用QEMU运行虚拟机。从上图可以看到,如果要使用Ubuntu的包管理软件安装KVM,其实安装的就是qemu-kvm。而qemu-kvm并不是一个什么很复杂的软件包,它只包含很少量几个文件,如下图:
用man命令查看一下它的文档,发现qemu-kvm包不仅包含的文件很少,而且它的可执行文件kvm也只是对qemu-system-x86_64命令的一个简单包装,如下图:
那么问题来了,kvm内核模块究竟是由哪个包提供的呢?其实,自从Linux 2.6开始,kvm就已经被加入内核了。如果非要找出kvm内核模块kvm.ko是由哪个包提供的,可以用如下命令考察一下:
写到这里,已经可以看出KVM的使用是很简单的了。下面,我使用KVM运行一下上一篇中安装的WinXP操作系统,体验一下QEMU经过KVM加速后的运行效率。使用如下命令运行使用KVM加速的QEMU:
可以看出,使用KVM加速后,虚拟机中的WinXP运行速度提升了不少,开机只用了34秒。我将分辨率调整为1366*768,图形界面运行也很流畅,不管是打开IE浏览器还是Office办公软件都没有问题,再也没有出现CPU使用率飙升到100%的情况。如果用ps-ef| grep qemu命令查看一下,发现kvm命令运行的还是qemu-system-x86_64程序,只不过加上了-enable-kvm参数,如下图:
另外,对于桌面用户来说,有一个好用的图形化界面也是很重要的。虽然QEMU和KVM自身不带图形界面的虚拟机管理器,但是我们可以使用第3方软件,比如virt-manager。只需要使用sudo apt-get install virt-manager即可安装该软件。该软件依赖于libvirt,在安装过程中也会自动安装。运行virt-manager的效果如下图,注意必须使用sudo运行,因为该软件需要超级用户权限:
该软件可自动识别系统中的虚拟机环境是QEMU+KVM还是Xen。新建一个虚拟机,由于之前安装过一个WinXP系统,所以选择导入现有硬盘镜像。点下一步后,出现如下界面:
这一步没什么好说的,再点下一步,如下图:
这里可以设置网络选项。如果勾选“在安装前自定义配置”的话,还可以对硬件进行进一步的自定义,如下图:
在上图中,我们可以看到虚拟机支持的所有虚拟显卡的类型,在这里,我当然选择的是VMVGA,因为我以前经常用VMWare,知道这些操作系统在VMWare的虚拟显卡设置下运行得都没有问题。当然,其它的选项都可以试一下,不过在虚拟的操作系统中需要安装相应的驱动程序。
最后,虚拟机运行的效果图如下:
可以看到,该程序提供的界面有非常丰富的功能菜单,功能是非常强大的,甚至可以向虚拟机中的操作系统发送组合按键。
可以这么说,如果没有VirtualBox的话,QEMU+KVM的组合应该是桌面用户的首选。下一篇我将尝试VirtualBox,VirtualBox号称是最强大的开源虚拟机系统,敬请期待。
kvm安装linux系统kvm安装linux
Windows系统能装KVM吗?
因为KVM广泛的兼容性,支持Windows,Linux,和Sun等主流操作系统,并兼容联想、曙光、浪潮、华为、宝德、HP、IBM、戴尔和思科等主流服务器。
所以Windows系统能装KVM。
裸机(服务器)可以直接安装KVM(虚拟机)吗?怎么安装?
两种最流行的裸机开源虚拟化技术是KernelVirtualMachine(KVM)和Xen,所以KVM可以直接在裸机上运行,不需要什么操作系统。KVM几乎支持任何操作系统:Linux、MacOS、Unix、Windows以及你所采用的其他任何操作系统。
KVM怎么连接?
一安装VNC1.安装VNC服务端(1)在Linux系统上安装VNCyum-yinstallvnc-serveryum-yinstalltigervnc-server(2)设置远程登录所需要的密码输入vncserver后会提示输入密码注:此密码是远程登录时所需要输入的密码(3)进行vncserver配置vi/etc/sysconfig/vncservers设置以下配置值VNCSERVRES=10000:root(其中10000为桌面号、root为用户名)VNCSERVERARGS=geometry800x600_nolistentcp_localhost(4)进行防火墙配置允许远程连接VNC服务器vi/etc/sysconfig/iptables_AINPUT_mstate_stateNEW_mtcp_ptcp_dport5901_jACCCEPT(5)重启VNC和防火墙服务servicevncserverrestartserviceiptablesrestart2.安装VNC客户端在Linux上安装vncviewer在Windows上安装TigerVNC软件二创建KVM虚拟机1.创建Linux虚拟机(1)通过qemu-img创建一个7G的映像文件qemu-imgcreate_fqow2Ubuntu1204.img7G(2)创建一个Linux虚拟机qemu-kvm_m1024_cdromubuntu-12.04-desktop-i386.iso_drivefile=Ubuntu1204.img;boot=on_bootd_nographic_vnc:
2注:-vnc与:2之间有空格在另外一台机器上启动TigerVNC,输入192.168.0.123:5902进行连接来进行安装操作和观察安装进度注:192.168.0.123为本机IP,5902为相应端口号(5900+2)2.创建Windows虚拟机(1)制作包含virtio驱动的映像安装UltraISO软件下载win7.iso,virtio-win-1.1.16.vfd,virtio-win-0.1-30.iso将virtio-win-0.1-30.iso解压成文件夹使用UltraISO打开win7.iso,并将virtio-win-0.1-30复制到对应路径将添加了virtio驱动文件夹的新win7.iso文件另存为新的ios文件win7_virtio.isoqemu-imgcreate_frawwin7_virtio.img30Gqemu-kvm_m1024_cdromwin7_virtio.iso_drivefile=win7_virtio.img,if=virtio,boot=on_fdavirtio-win-1.1.6.vfd_bootd_nographic_vnc:
3注:-vnc与:3之间有空格在另外一台机器上启动TigerVNC,输入192.168.0.123:5903进行连接来进行安装操作和观察安装进度注:192.168.0.123为本机IP,5903为相应端口号(5900+3)三远程桌面虚拟化连接在另外一台机器上启动TigerVNC,输入192.168.0.123:593进行win7虚拟机登录
KVM、QEMU和KQemu有什么区别?
KVM只基于内核的虚拟化Qemu本身就是一种虚拟化,也是一种硬件仿真模拟器KQemu是Qemu针对于KVM做优化后和KVM的结合,性能比Qemu本身好很多。。。我们目前说的KVM其实就是qemu-kvm在linux中是以一个/dev/kvm的块设备和qemu-kvm的一个进程存在的
kvm三个组件及应用?
KVM虚拟化架构及三种模式
1、客户模式(guestOS):VM中的OS为GuestOS
客户机在操作系统中运行的模式,客户机分为内核模成和用户模式
2、用户模式:
为用户提供虚拟机管理的用户空间工具以及代表用户执行I/O,Qemu工作在此模式下(Qemu的主要功能)
3、linux内核模式
模拟CPU、内存,实现客户模式切换,处理从客户模式的推出,KVM即运行在此模式下
KVM原理
1、Guest:客户机系统,包括CPU(vCPU)、内存、驱动(Console、网卡、I/O设备驱动等)
被KVM置于一种受限制的CPU模式下运行。
2、KVM内核模块模拟处理器和内存以支持虚拟机运行
3、Qemu主要处理I/O以及为客户提供一个用户空间/dev/kvm工具libvirt来进行虚拟机管理
ioctl(定义)专用于设备输入输出操作的系统调用
libvirt:KVM管理工具
以上构成一个完整的虚拟化平台
简单理解:
KVM驱动提供处理器、内存的虚拟化,以及客户机I/O的拦截,guest的I/O被拦截后,交由Qemu处理
Qemu利用接口libkvm调用(ioctl)虚拟机设备接口/dev/kvm来分配资源、管理、维护虚拟机
KVM工作流程
用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式。KVM驱动为虚拟机创建虚拟CPU和虚拟内存,然后执行VMLAU-NCH指令进入客户模式,装载GuestOS并运行。GuestOS运行过程中如果发生异常,则暂停GuestOS的运行并保存当前状态同时退出到内核模式来处理这些异常。
内核模式处理这些异常时如果不需要V/O则处理完成后重新进入客户模式。如果需要V/O则进入到用户模式,则由Qemu来处理I/O,处理完成后进入内核模式,再进入客户模式
如何在Linux中用命令行工具管理KVM虚拟环境
在Linux中用命令行工具管理KVM虚拟环境的步骤:
第一步:配置存储池
Virsh命令行工具是一款管理virsh客户域的用户界面。virsh程序能在命令行中运行所给的命令以及它的参数。本节中,要用它给KVM环境创建存储池。想知道关于这个工具的更多信息,用以下这条命令。
# man virsh
1、用virsh带pool-define-as的命令来定义新的存储池,需要指定名字、类型和类型参数。本例中,将名字取为Spool1,类型为目录。默认情况下可以提供五个参数给该类型:
source-host
source-path
source-dev
source-name
target
对于目录类型,需要用最后一个参数“target”来指定存储池的路径,其它参数项可以用“-”来填充。
# virsh pool-define-as Spool1 dir----"/mnt/personal-data/SPool1/"
2、查看环境中所有的存储池,用以下命令。
# virsh pool-list--all
3、现在来构造存储池了,用以下命令来构造刚才定义的存储池。
# virsh pool-build Spool1
4、用带pool-start参数的virsh命令来激活并启动刚才创建并构造完成的存储池。
# virsh pool-start Spool1
5、查看环境中存储池的状态,用以下命令。
# virsh pool-list--all
会发现Spool1的状态变成了已激活。
6、对Spool1进行配置,让它每次都能被libvirtd服务自启动。
# virsh pool-autostart Spool1
7、最后来看看新的存储池的信息吧。
# virsh pool-info Spool1
恭喜,Spool1已经准备好待命,接下来试着创建存储卷来使用它。
第二步:配置存储卷/磁盘映像
现在轮到磁盘映像了,用qemu-img命令在Spool1中创建一个新磁盘映像。获取更多细节信息,可以查看man手册。
# man qemu-img
8、应该在qemu-img命令之后指定“create, check,…”等等操作、磁盘映像格式、想要创建的磁盘映像的路径和大小。
# qemu-img create-f raw/mnt/personal-data/SPool1/SVol1.img 10G
9、通过使用带info的qemu-img命令,你可以获取到你的新磁盘映像的一些信息。
查看存储卷信息
警告:不要用qemu-img命令来修改被运行中的虚拟机或任何其它进程所正在使用的映像,那样映像会被破坏。
现在是时候来创建虚拟机了。
第三步:创建虚拟机
10、现在到最后一个环节了,在最后一步中,将用virt-install命令来创建虚拟机。virt-install是一个用来创建新的KVM虚拟机命令行工具,它使用“libvirt”管理程序库。想获取更多细节,同样可以查看man手册。
# man virt-install
要创建新的KVM虚拟机,需要用到带以下所有信息的命令。
Name:虚拟机的名字。
Disk Location:磁盘映像的位置。
Graphics:怎样连接VM,通常是SPICE。
vcpu:虚拟CPU的数量。
ram:以兆字节计算的已分配内存大小。
Location:指定安装源路径。
Network:指定虚拟网络,通常是virbr0网桥。
virt-install--name=rhel7--disk path=/mnt/personal-data/SPool1/SVol1.img--graphics spice--vcpu=1--ram=1024--location=/run/media/dos/9e6f605a-f502-4e98-826e-e6376caea288/rhel-server-7.0-x86_64-dvd.iso--network bridge=virbr0
创建新的虚拟机
11、会看到弹出一个virt-vierwer窗口,像是在通过它在与虚拟机通信。