Kernel-based Virtual Machine 的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20 之后集成在linux 的各个主要发行版本中。
一个普通的Linux 进程有两种运行模式:内核和用户。KVM 增加了第三种模式:客户模式(有自己的内核和用户模式)
KVM 的虚拟机需要硬件支持,即如Intel VT 技术(vmx)或AMD V 技术(svm).且Linux 发行版本必须在64bit 环境中才能使用KVM
完全虚拟化和半虚拟化
在完全虚拟化中,Guest OS运行在位于物理机的 hypervisor 之上。Guest OS并不知道它已被虚拟化,并且不需要任何更改就可以在该配置下工作。
相反,在半虚拟化中,Guest OS不仅知道它运行在 hypervisor 之上,还包含让Guest OS更高效地过渡到 hypervisor 的代码
在完全虚拟化模式中,hypervisor 必须模拟设备硬件,它是在会话的最低级别进行模拟的。尽管在该抽象中模拟很干净,但它同时也是最低效、最复杂的。在半虚拟化模式中,Guest OS和 hypervisor 能够共同合作,让模拟更加高效。半虚拟化方法的缺点是操作系统知道它被虚拟化,并且需要修改才能工作。
- 确定机器是否支持虚拟化:(必要时需要在BIOS开启VT)
- [root@rhel6 ~]# egrep "(vmx|svm)" --color=always /proc/cpuinfo
- flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 x2apic popcnt xsave avx lahf_lm arat epb xsaveopt pln pts dts tpr_shadow vnmi flexpriority ept vpid
- 安装KVM
- [root@rhel6 ~]# yum install kvm virt-manager libvirt
- [root@rhel6 ~]# /etc/init.d/libvirtd start
- 确定正确加载KVM模块
- [root@rhel6 ~]# lsmod | grep kvm
- kvm_intel 50380 0
- kvm 305113 1 kvm_intel
- 检查KVM 是否成功安装
- [root@rhel6 ~]# virsh -c qemu:///system list
- Id 名称 状态
- ----------------------------------
- 绑定桥接器:
- [root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
- DEVICE=br0
- BOOTPROTO=none
- ONBOOT=yes
- IPADDR=192.168.2.11
- NETMASK=255.255.255.0
- TYPE=Bridge
- [root@rhel6 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
- DEVICE=eth0
- ONBOOT=yes
- BRIDGE=br0
- BOOTPROTO=none
- TYPE=Ethernet
- 安装Virtio实现网卡和硬盘的透写
VirtIO 是一个用来实现"虚拟IO"的通用框架,用于实现虚拟的网卡,磁盘等虚拟设备的透写。
linux内核版本在2.6.25以上的,都应该集成了VirtIO的驱动,但windows需要另外安装
Windows安装VirtIO驱动有两种方法:
1、使用IDE方式来安装系统,安装系统完成后,在guest中安装virtio磁盘驱动,然后再修改kvm启动参数,设置磁盘为virtio。
安装完Windows后,创建一块临时的硬盘,将其设置为virtio模式添加到Windows中,并设置网卡模式为virio
开机后将提示检查到新硬件,然后安装驱动程序后关机
删除新添加的临时硬盘,将原来的硬盘设置为virtio模式,开机即可识别到硬盘与网卡都为virtio模式
2、在安装时直接加载virtio驱动。
由于XP的安装程序只支持从软盘加载驱动程序,因此需要一个软盘的镜像文件(virtio-win-1.1.16_1.vfd),在xp的安装开始,按F6从软盘加载驱动程序
- 为KVM虚拟机机添加virsh console支持
- [root@rhel6-2 ~]# vi /etc/inittab #在/etc/inittab文件末尾添加以下内容
- co:2345:respawn:/sbin/agetty ttyS0 115200
- [root@rhel6-2 ~]# vi /etc/securetty #在/etc/securetty文件末尾添加以下内容
- ttyS0
- [root@rhel6-2 ~]# vi /etc/grub.conf #在/etc/grub.conf文件添加内核参数
- kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/Lrhel6-root quiet rhgb console=ttyS0,115200
- [root@rhel6-2 ~]# reboot #重启系统使其生效
- [root@rhel6 ~]# virsh start rhel6-2 #开启rhel6-2虚拟机
- [root@rhel6 ~]# virsh console rhel6-2 #通过console连接到rhel6-2虚拟机
- [root@rhel6 ~]# virsh shutdown rhel6-2 #正常关闭rhel6-2虚拟机
- [root@rhel6 ~]# virsh destroy rhel6-2 #直接关闭rhel6-2虚拟机的电源