VPS(Virtual Private Server)技术,是一种将一台物理服务器分成几个虚拟云服务器的技术。虚拟化成功提高了资源的利用率,解决了硬件和系统之间的依赖性。
不少用户在选购VPS动态拨号服务器时常常会有疑问,为什么相同配置条件下VPS的价格却有区别?这里就要提到一个专有名词“虚拟化技术”:实现VPS的技术分为虚拟化技术和容器技术,今天笔者专门对虚拟化技术进行一个详细的讲解。
虚拟化技术有Xen、OpenVZ、KVM、VMWare在服务端的虚拟化技术ESXI以及微软的Hyper-V。
Xen
Xen是一个开放源代码的Para-virtualizing虚拟机。
Para既有并列也有半的意思,因此国内翻译过来也会把这种虚拟化叫做半虚拟化。
小科普:什么是虚拟机?虚拟机(Virtual Machine)是一种通过软件模拟出来的具有一整套硬件系统功能、在一个完全隔离的环境中的完整计算机系统。创建虚拟机时要把实体机的部分内存和硬盘容量分割出来当作虚拟机的内存与硬盘容量,每个虚拟机都拥有各自独立的硬盘、CMOS跟操作系统,操作起来与实体机的操作一致。Xen虚拟机可以在多个物理服务器之间实时迁移。
根据笔者自己查阅文献后的总结,会发现Xen比百科中的寥寥数笔复杂得多。
Xen出现的时候还没有硬件辅助虚拟化技术,因此要使用Xen的代价是要修改操作系统内核,好让操作系统在遇到指令时不会去调用CPU指令工作是直接调用hypercall。Windows操作系统内核是无法修改的,但有支持Xen的Linux版本。
服务器安装Linux后再装Xen,此时会修改Linux系统内核,改完重启服务器后工作系统就不再是Linux而是Xen的Hypercall,图中的Host Os是之前的Linux,本质上是一个虚拟机。
假如再创建Guest Os就会出现在图中Host Os右侧,又被称为Paravirtualized Os。
在CSDN中把Xen分为Xen Para-virtualized和Xen hvm两种,上面提到过Xen不是一个真正的虚拟机而是运作自己内核的一种半虚拟化技术,尽管Xen Para-virtualized因为Windows系统内核无法被修改而只支持Linux,但Xen hvm因为在内核调用方面不完全依赖服务器内核因此支持Windows系统(Xen hvm是全虚拟化,可虚拟所有常见操作系统,需要CPU指令支持)。
Kvm
Kvm( Kernel-Based Virtual Machine)出现的时候硬件辅助虚拟化技术已经出现,能够解决X86虚拟操作系统中某些特权指令无法执行的问题,因此,Kvm基于辅助虚拟化技术应用之上。Kvm是完全开源的,其本身是一个Linux的内核模块,该内核模块使得Linux变成了一个Hypervisor。
Kvm有一个内核模块叫Kvm.ko,只用于管理虚拟CPU(需要支持虚拟化扩展的CPU)和内存,网络设备和存储的功能由Qemu与Linux内核实现。作为一个Hypervisor,Kvm本身只关注虚拟机调用和管理内存两个方面,而IO外设的任务是托管给Qemu跟Linux内核的。
但是,Kvm本身不执行任何硬件模拟,需要客户空间程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间向它提供模拟的IO,并将它的视频显示映射回宿主的显示屏。这个应用程序就是上文提到的Qemu。
其实Qemu原本不是Kvm的一部分,它只是一个纯软件实现的性能低下的虚拟化系统。但是Qemu代码中带有整套的包括了内存虚拟化、处理器虚拟化以及Kvm需要的虚拟设备模拟(显卡、网卡、硬盘以及存储器)的虚拟机实现。Kvm对Qemu在简化代码方面做了修改,令Qemu在VM运行期间通过Kvm模块提供的系统调用进入内核,由Kvm运用特殊模式运行。虚拟机在进行IO操作时,Kvm会从上次的系统调用出口处返回Qemu,由Qemu负责模拟解析。Qemu和Kvm可以说是相互依赖的虚拟技术。
作为Kvm的管理工具,Libvirt除了能管理Kvm还可以管理VirtualBox、Xen等。
Kvm虚拟机的virsh日常配置和管理
OpenVZ
OpenVZ是完全基于Linux操作系统级别,通过虚拟化技术将一个服务器安装成多个操作系统的虚拟技术,无需通过指令就能够直接在CPU上运行,一般而言OpenVZ会有更好的性能,并且比上面两种虚拟技术的价格要低。
由于OpenVZ拥有部署迅速和密度高而广受托管用户的欢迎,主机内核与CPU、ram和磁盘一起与Guest虚拟机共享,并且IO与Guest虚拟机之间几乎不存在分割瓶颈。与Xen和Kvm相比,OpenVZ的磁盘性能显然更好,但这是以缺乏分离度为代价的。
OpenVZ可以在单个物理服务器上创建多个隔离的虚拟专用服务器(VPS)并以最大效率共享硬件和管理资源,每个VPS的操作模式和主机完全一致。用户可以独立重启应用程序、修改配置文件以及安装软件,拥有根访问用户、内存、IP地址、文件、处理器、系统库文件、应用服务和配置文件等权限。VPS用户之间完全隔离,不会绑定在一个CPU上、可以使用所有的CPU资源。
ESXI
ESXI是Vmware vSphere Hypervisor套件之下的重要组件,是Vmware推出的一款优秀的服务器级别虚拟机。
小科普:什么是vSphere?vSphere是VMware在2001年基于云计算推出的一套企业级虚拟化解决方案(也可以说正是因为vSphere,解决了互联网企业的服务器体验问题),核心组件是ESX(ESX依赖于Linux源码,后来被摒弃为现在的ESXI所取代),号称是业界第一套云计算的操作系统,已经实现了性能监控、集中管理、虚拟化基础架构等一体化解决方案,目前仍在不断拓展功能。与常用的虚拟机的区别是,ESXI不依赖于任何操作系统,不仅它本身就可以看作一个操作系统,而且也可以在它上面安装系统。
Hyper-V
Hyper-V是微软第一个采用类似Vmware和Citrix开源Xen一样的基于Hypervisor的技术,这也意味着微软会更加直接地与VMware公司展开竞争,但竞争的方式会有所不同。
由于Hyper-V与VMware相比更倾向于VMware,因此在这里不做细讲。