使用KVM进行虚拟化
本章介绍如何设计和实现企业级虚拟化解决方案。 我专注于基于内核的虚拟机(KVM),因为它是基于Linux的。 本章的主题包括如何理解虚拟化,选择硬件和配置网络; 存储; 文件系统选择; 优化; 安全问题; 以及将它们放在一起的参考架构。
什么是虚拟化?
操作系统的虚拟化是在另一台机器中创建虚拟机(VM)。 主机称为虚拟机管理程序,guest虚拟机称为虚拟机。 如图3-1所示,五个虚拟机在一个物理机箱上运行。 假设主机或虚拟机管理程序正在运行RedHat或CentOS,并且VM也在运行相同的操作系统,那么最终会有六个操作系统副本。
使用KVM,首先安装基本操作系统,然后安装KVM软件包,然后开始创建VM。
为企业使用虚拟化的一些优点如下:
- 减少资本支出,因为您购买的服务器较少
- 更快的配置,因为您可以按需扩展
- 由于服务器较少,降低了能源成本
- 使用高可用性使灾难恢复变得更容易
- 更容易支持遗留应用程序
- 更接近迁移到云端
- 由于数据中心占地面积较小,因此减少了支持需求
无论如何,虚拟化并不是灵丹妙药。使用虚拟化的一些缺点如下:
- 虚拟化的抽象层增加了性能损失。
- 虚拟化平台上的过度配置很容易,导致高峰时段的系统性能下降。
- 软件定义网络的采用缓慢导致难以管理的虚拟网络和拥挤的虚拟网络。
- 将应用程序重写为更加虚拟/云友好可能会导致额外的前期采用成本。
- 丢失虚拟机管理程序可能导致虚拟机管理程序上丢失大量虚拟机。
- 虚拟化管理需要在运营领域进行额外的培训和流程。
虚拟化解决方案
一些不同的企业级虚拟化解决方案如下:
LXC
https://linuxcontainers.org/
OpenVZ的
http://openvz.org/Main_Page
QEMU / KVM
http://www.linux-kvm.org/page/Main_Page
VMware的
http://www.vmware.com/
XenServer的
http://www.xenserver.org/
微软的Hyper-V,基于Windows
http://www.microsoft.com/en-us/server-cloud/solutions/virtualization.aspx
Bhyve,基于FreeBSD
http://bhyve.org/
本章介绍KVM。选择哪个平台的选择可能很复杂。一种可能的选择是使用虚拟基准测试软件(例如SPEC virt(http://www.spec.org/virt_sc2013/))比较环境中的两个或更多解决方案。使用SPEC virt,您可以启动大量虚拟机,然后运行不同的工作负载,例如Web服务器,数据库服务器等。最后,SPEC virt会发布一系列可以比较的数字,以确定XenServer,KVM或其他虚拟化平台是否能为您提供更好的性能。
Linux容器(LXC); 它是一个用户空间界面,用于创建以及管理系统和应用程序容器。 与KVM相比,LXC是轻量级的,对于每个虚拟机管理程序,通常可以创建比VM更多的Linux容器。 在企业中,您可能会找到VM以及LXC。 LXC和KVM之间的主要区别在于,使用KVM,您可以运行不同的内核,每个VM一个,但是使用LXC,您可以共享相同的内核。 LXC也仅限于与虚拟机管理程序相同的操作系统,但KVM不是; 您可以在VM上安装与虚拟机管理程序不同的操作系统。 管理LXC的工具与管理KVM的工具不同。 Libvirt是一个虚拟化管理库,可用于管理KVM VM和Linux容器。 Libvirt非常灵活,可以管理众多虚拟化技术。 LXC的一个例子如图3-2所示。
OpenVZ也是基于容器的,类似于LXC。使用LXC与OpenVZ的选择可能很复杂。 LXC得到了RedHat的支持,所以如果您是CentOS或RedHat商店,您可能会发现更容易获得LXC与OpenVZ的支持。另一种迅速普及的基于容器的技术是Docker(https://www.docker.com/)。 Docker可用于快速应用程序部署。
十多年来,VMware一直是虚拟化解决方案的领导者。 VMware中的虚拟机管理程序基于Linux,管理服务器基于Windows。使用VMware的一个优点是虚拟机管理程序嵌入在某些服务器中,这样可以省去安装虚拟机管理程序的麻烦。 VMware和Microsoft虚拟化解决方案的一个警告是许可成本。虽然两者都提供免费虚拟化解决方案,但他们的企业产品并非免
在Linux领域,XenServer,VMware和KVM是虚拟化的领先提供商。您在企业中的选择取决于许多因素:
- 提供工程师技能
- 安装的操作系统基础
- 组织内部的政治
- 供应商和合作伙伴关系
- 业务需求
- 企业采用的技术方向
例如,如果您正在运行Linux并且没有Windows服务器,那么使用Hyper-V是没有意义的; KVM可能是更好的选择。 另一方面,如果您更喜欢具有全功能图形用户界面和基于Linux的虚拟机管理程序的成熟产品,那么VMware可能是比KVM更好的解决方案。 选择KVM的一个优点是RedHat完全支持它。 Citrix也完全支持XenServer; 但是,它并没有像KVM那样与RedHat或CentOS紧密集成。