28.1 虚拟化介绍
28.2 常见虚拟化软件
28.3 虚拟化架构
28.4 KVM介绍
28.5 Centos7上安装KVM
28.1 虚拟化介绍
虚拟化
技术简单讲,就是把一台物理计算机虚拟成多台逻辑计算机
,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源。VMware Workstation就是虚拟化。
虚拟机管理器Hypervisor
(VMM
),它是用来管理逻辑计算机的。
虚拟化技术分为全虚拟化和半虚拟化全虚拟化
:早期的CPU硬件不支持虚拟化,虚拟机上的操作系统(guestos)要想使用cpu资源,需要通过VMM来翻译指令
,这个过程比较耗费资源,这种虚拟化技术叫做全虚拟化。例如:VMware Workstation半虚拟化
:通过修改guestos内核
,让guestos可以直接使用CPU资源,而不需要翻译指令了,从而节省了资源,但修改内核比较鸡肋。例如:XEN
因为后续cpu厂商直接支持虚拟化,不需要通过VMM翻译指令了,无所谓半虚拟化和全虚拟化。
参考文章 http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html
http://itoedr.lofter.com/post/1472ba_69c62fa
28.2 常见虚拟化软件
- VMware系列
VMware workstation
适合单独计算机VMware vsphere
(VMware esxi)用于多台计算机(服务器),方便迁移虚拟机,从A物理机上的虚拟机迁移到B物理机上。可以让现有的模板环境去快速搭建其他机器的环境。VMware Fusion
(Mac)苹果系统(Unix)上使用的。
VirtualBox
开源 Sun公司开发,后Oracle收购Sun。类似于VMwareHyper-V
商业,厂商微软,适合在Windows server上安装Xen
开源的 半虚拟化(需要改内核)XenServer
Xen的分支软件,商业化,厂商Ctirx。Openvz
开源 基于linux 虚拟机和宿主机共用一个内核,可以虚拟更多的虚拟机,缺点不够稳定,用于早期的vpsKVM
开源 基于linux内核模块(不需要改Linux内核)
参考文章 http://developer.huawei.com/ict/forum/thread-23385-1-1.html
28.3 虚拟化架构
类型I
:虚拟机直接运行在系统硬件上,创建硬件全仿真实例,被称为“裸机”,也称为裸金属架构。类型II
:虚拟机运行在传统操作系统上,同样创建的是硬件全仿真实例,被称为“托管”hypervisor。也称为宿主架构。
还有一种容器虚拟化
(docker):容器指虚拟机里面没有操作系统,只有应用。容器运行在真实操作系统上,创建一个独立的虚拟化实例(应用),指向底层托管操作系统,被称为“操作系统虚拟化。
现在有4种虚拟化技术是当前最为成熟而且应用最为广泛的,分别是:VMWARE的ESX、微软的Hyper-V、开源的XEN和KVM。其中VMWARE的ESX
,Hyper-V
和XEN
都是属于类型I
。KVM
是属于类型II
。
参考文章 http://developer.huawei.com/ict/forum/thread-23385-1-1.html
28.4 KVM介绍
KVM是以色列初创公司Qumranet开发,2008年9月RedHat公司收购了Qumranet
KVM是完全开源的,RedHat基于KVM的虚拟化解决方案叫做RHEV
KVM是Linux内核的一个模块,它把Linux内核变成了一个Hypervisor
KVM在Linux操作系统里面以进程的形式出现,由标准的Linux调度程序进行调度,这使得KVM能够使用Linux内核的已有功能
只有一个KVM内核模块还不能实现虚拟化的全部功能,就好比操作系统只有内核还不能成为一个完整的操作系统一样
QEMU是一个开源的虚拟化软件,纯软件,可以虚拟化所以的硬件,但性能不强
KVM基于QEMU开发了一个能够运行在用户空间的工具QEMU-KVM
磁盘、网络设备等都是通过QEMU-KVM这个工具模拟出来的
KVM和QEMU-KVM通信是通过/dev/kvm实现的
libvirt是用来管理KVM虚拟机的API,其命令为virsh
总结
KVM模块可以让Linux内核变为Hypervisor。QEMU-KVM可以虚拟硬件,KVM和QEMU-KVM通讯是通过/dev/kvm完成的。管理KVM是通过libvirt来操作的,命令是virsh
。
28.5 Centos7上安装KVM
在VMware上设置内存2G
处理器2核,虚拟化引擎两个虚拟化相关的选项打上对勾
增加一个20G的虚拟磁盘,用于挂载存放虚拟机系统
检查cpu个数
1 | [root@kun02 ~]# cat /proc/cpuinfo |grep -c 'processor' |
或者1
2[root@kun02 ~]# grep -c 'processor' /proc/cpuinfo
2
检查cpu参数是否支持虚拟化
1 | [root@kun02 ~]# grep -Ei 'vmx|svm' /proc/cpuinfo |
vmx
表示支持intel虚拟化svm
表示支持amd虚拟化
格式化新硬盘并挂载
1 | [root@kun02 ~]# mkfs.xfs /dev/sdb |
关闭防火墙
1 | [root@kun02 ~]# systemctl stop firewalld |
下载安装kvm相关的包
1 | [root@kun02 ~]# yum install -y virt-* libvirt bridge-utils qemu-img |